CS 110 Introduction to Computer Science I

Section 3

Fall 2013

We have a class google group: 
Send messages to:

Most of you will be automatically subscribed with your USF Dons email account.  If you are not subscribed, send me a message and I'll subscribe you.

Lecture: CSI G12 TR 2:40pm-4:25pm

Midterm1: Thursday, October 3th, 2013 (in class)
Midterm2: Thursday, November 14th, 2013 (in class)
Final: Thursday, December 12th at 3:00pm to 5:00pm in CSI G12


Instructor: Greg Benson
Phone: 415.422.5066
Office: Harney 533

Teaching Assistant: Mlilca Hadži-Tanović

Teaching Assistant: Adam Toth-Fejel

Course Objectives and Topics

This course will introduce you to the field of computer science.  You will learn the foundations of computer programming, computer algorithms, and data structures.  We will practice computer programming using the Python Programming Language.  Python is suited well for both beginning programmers as well as professional software developers.  It is the third most popular language used at Google.  Most importantly, Python is extremely fun to use.  We will also encounter some other languages, such as HTML (HyperText Markup Language), which is used to encode web pages, and JavaScript, which is used to create dynamic applications that run in a web browser.

During the semester we will spend time learning how to program by writing interesting software.  We will learn how to perform numerical computations, process and transform text, draw graphics and animations, and build dynamic, interactive web sites.

Much of what you build in class will be accessible on the web for your friends and family to see.

In this class, equally important to learning how to program is learning effective problem solving.

Who should take this course?

  • Anyone who wants to be a Computer Science Major.  This is the first required course.
  • Anyone who wants a Computer Science Minor.
  • Anyone who wants to learn how to program and develop dynamic web-based applications.
  • Beginners.  This class assumes no prior computer programming experience.
  • USF Math major who need to fulfill their computational requirement.
  • Other USF majors who want to develop computer programming and problem solving skills.
  • Other USF majors who want to fulfill their CORE B1 math requirement.

Learning Outcomes

On completion of this course the student should be able to accomplish the following:
  • Write computer programs using the Python programming language.
  • Manipulate different types of data: number, text, lists, and dictionaries.
  • Write and understand basic computer algorithms
  • Mentally execute and trace the execution of computer programs.
  • Write 2D drawing and animation programs.
  • Write web-based applications.
  • Find and solve simple computer program bugs.

Course Materials

We will be using the online book:

How to Think Like a Computer Scientist (

There are many Python resources online.  Here is a good Python language and library reference:

The Python Quick Reference (

A very good optional Python reference is:

Python Essential Reference, 4th Ed.
David M. Beazley
Addison-Wesley Professional
ISBN-13: 978-0672329784

This is primarily a reference for the Python programming language.  As you become more familiar with the language, you will use this to write more complicated programs.  I recommend reading Chapter 1 several times, even if you do not fully understand all the concepts.  We will cover most of this in this course.

Assignments and Exams

Your classwork wil consist of labs, projects, and exams.  Lab assignments will be assigned in class and you will be given time to complete the labs during the lab portion of the class.  Labs will generally be due each Monday at 5pm.  You will put your code and answers to questions on your portfolio web site (more on this below).  Labs will be graded on a done or not done basis.

We will have approximately four programming projects throughout the semester.  While the labs will usually be short exercises, the projects will be larger and more focused on a specific problem.

Note that during the semester you will have to complete both labs and projects.  You should expect to spend considerable time outside of class working on your assignments.  You should start early and come see me or the TAs if you need help.


Throughout the semester you will maintain a class portfolio as a USF Dons Google Site.  If it is not in the portfolio it does not exist!  I will walk you through how to create a Google Site.

Format for Submitted Homework



 Labs 20%
 Projects 30%
 Midterms (2) 20%
 Final 30%


All assignments will be worth 100 points.  Grading will be done on an absolute scale:

 Min A-
 Min B-
 Min C-
 Min D-

If you score 90% or higher will be guaranteed an A-.  For some assignments and exams the Min values may be lowered depending on the level of difficulty.  The Min values will never be raised.

Conciseness and neatness of your solutions are considered in the grading of assignments and exams.  While being neat won't necessarily improve your score, being messy will certainly lower your score.

Only turn in what you intend to have graded.

Due Dates and Attendance

Assignments must be turned in on time to receive credit.  Except in the most extreme situations, late assignments will not be accepted.  If you cannot complete an assignment by the due date, hand in whatever you have done in order to receive partial credit.

Class attendance is not required, but it is highly recommended.  Please show up on time to class.


In general, assignments to be considered for regrades must be turned in no later than one week after the graded assignments were made available, not from when the student picked up her or his paper.  However, at the end of the semester, assignments to be considered for regrades must be turned in earlier, as will be announced.  Similarly, any misrecorded grades must be reported within a week of their posting, except as will be announced at the end of the semester. 

Missed Exams

Make-up or early exams will not be given except in the most extreme situations.  If you must miss an exam due to extreme illness, etc. contact the instructor (email is fine) or leave a message with the Department of Computer Science office (415.422.6530) before the exam.

Laptop Usage in Class

You may use your laptop during class as long as you are using it in order to take notes or to look up information regarding the lecture content.  Please do not user your laptop for any other activity such as to read or compose email, to use instant messaging software, or to play games.  This is very disruptive to me and the other students in the class, not to mention that it will distract you from learning the material.  If I have reason to believe you are not using your laptop in a productive way I will ask you not to use it in class.

Cheating and Plagiarism

Each student is to do his or her own work on the homeworks and projects.  It is fine to talk with others about general approaches used to solve the assignments or simply to understand the problem statement, but each student is to develop his or her own solution; collaborative efforts are not allowed.

In addition, using solutions from any other source is forbidden.  In particular, using solutions (either instructors' or other students') from previous offerings of this course is not allowed.  To summarize: all projects and labs are to be individual and original efforts.

If you are caught cheating or plagiarizing (e.g., collaboration, copying on exams, cutting and pasting text) I will assign you a F for the course and you will be reported to the Dean.

Email, Mailing List, and Course Web Page

When you email the instructor, TA, or the mailing list, be sure to email from an account to which we can directly reply.

Clarifications, changes, etc. regarding the class and assignments will be posted to the class web page class google group.  Also check your email and website frequently.