This course is an introduction to the field of computer science. You will exercise the creative and logical sides of your brain like never before, applying them to the development of software. You will learn the Python programming language, web development tools, and deploy your projects in the 'cloud' using Google's App Engine. You will learn about and discuss how technology effects society, and how computer scientists can help.  Best of all, you will improve your problem-solving skills in a manner which will help you in all walks of life.

Who Should Take the Course?

  • Anyone who wants to learn how to program and develop web pages. No matter what your major or vocation, knowing how to create software is an important skill and can get you a job. Want to set yourself up? Take the CS 110-112 sequence.
  • Beginners: No prior programming experience required or expected.
  • Computer Science majors or potential ones: This is the first course for the computer science major.
  • Other Majors: Many students who are not computer science majors take this class and often the next one in the sequence (CS112). This class covers the Core Math B requirement. Note that CS also offers another course that covers this requirement, CS 107, which is less technical and slower paced.


MWF 1:30-3:15.
Harney Science Center, rm. 235

Professor: David Wolber
Office: Harney 529
Phone: 422-6451
Office Hours: MW 3:30-4:30 or by appointment

TA: Evren Bingol

Text:  How To Think Like a Computer Scientist (on-line)
          Additional readings


In-Class Participation, Research Assignments   15%
Projects                                                               45%
Midterm                                                               20%
Final                                                                    20%

Software Development Assignments

There will be a software development assignment due every two to three weeks. You will have time in class to work on these assignments, but you will also need to put in ample time outside of class. These assignments constitute nearly one-half of your grade! Begin them early and visit your professor and teaching assistant regularly-- unlike a test, you can assure full credit on these projects by working hard.

Research Assignments

Throughout the semester, you'll be given topics to write/create about.   The purpose of these exercises is to give you an opportunity to reflect on and think about some relevant issues surrounding the ways in which technology affects our lives. I am not interested in having you agree with me; I don't care if we disagree on every single point. I am interested in helping you to develop an understanding of the issues and a solid foundation for explaining why you feel the way you do.

You'll post  entries on the course web site. This site will be public-- your audience is not just your professor, but the world! So be serious and respectful, and represent this class and the university well.

  • Your entries should be self-sufficient, that is, even though this is a class assignment and you are answering assigned questions, don't make your page seem that way. Introduce the topic clearly and have a "take" on it. Don't write sentences that answer some question that your reader doesn't know exists.
  • Since everyone is working on a public site, you can and should collaborate with classmates. Read their entries, quote from them, and comment on them (on their pages). However, all academic rules apply. Copying text, without citation, from your classmates sites or any other sources will result in a zero for the project and university discipline. Do not plagiarize!
  • At least one embedded YouTube video or image, with a quote/citation from it. Videos can be related ones you find on YouTube, or videos of yourself and classmates discussing the topics.
  • A quote from another student's post on the same topic (with appropriate link/citation)
  • Links, with appropriate citation, to at least two on-line resources other than the ones you're given.
You'll be graded on a 10 point scale based on how well you address the question, how well-thought out or sophisticated your answers are, and whether or not you follow the guidelines above. While this is not an English class, I will take off for egregious misspelling or grammatical errors, and for poor writing.

In short read the assigned texts, watch the videos, follow links that interest you and read those. Then write two or three pages telling me what you learned and most importantly what you think. Say something interesting!

Course Outline

Part I

How Computers Work, starting with an electric current
Static web pages with wiki and HTML/CSS
Using Linux
Basic Python: variables, conditionals, lists, iteration, and functions

Part II

Python classes and complex programs.
Architecture of the the Internet, Search, SEO
Dynamic web pages with Google App Engine
Templates,  Model-View controller, Persistence

Part III

Web 2.0 and Technology in Society
Python: Use of Libraries, APIs


Most days we'll have an in-class lab. These labs typically involve programming or design. They're typically graded on a done/not done scale. If you're focused, you can probably finish them during class. If not, you'll ned to finish them outside of class (your professor has office hours after class on Monday and Wednesday).

Attendance and Participation

Attendance is mandatory; if you miss a class without a valid excuse (doctor's note for illness, USF-sponsored event, etc) one percentage point of your overall grade will be deducted. Also, you cannot make up any lab assignments from days you miss without a valid excuse. If you miss more than three sessions, you will be asked to drop the course.

Late Policy

Late writing assignments and labs will not be accepted without a prior exception (e.g. for a medical excuse).