Course Syllabus

CS 110 Introduction to Computer Science I

Section 4, Fall 2015

Staff

Instructor: David Galles
Email: galles@usfca.edu
Phone: (415) 422-5951
Office: Harney 542

Teaching Assistant: Cole Howard
Email: cjhoward@dons.usfca.edu

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.  Note that this is a "learn how to program (and think like a computer scientist)" class, using python, not a "learn how to program python" class -- the important learning outcomes are understanding basic programming ideas and ways of approaching problems that you can use in any language.

Python is the vehicle that we will use to explore the deeper concepts of algorithmic design, debugging, and thinking like a computer scientist. We have chosen python because it is easy to jump into and start programming, while still being a very heavily used language (it is the third most popular language used at Google) Most importantly, Python is fun!

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.

Who should not take this course?

  • Anyone who is looking for an easy 'A'. This class is hard. Fun, exciting, and very. very useful -- but also hard!
  • Anyone with very limited time this semester. Programming, like musical performance, requires practice, and lots of it. This class requires more time / until than many other introductory classes.
  • Anyone with substantial programming experience. If you have substantial programming experience, see me right away to find the proper course for you to take.

Learning Outcomes

On completion of this course the student should be able to accomplish the following:

  • Manipulate different types of data: numbers, text, lists, and dictionaries.
  • Create programs using basic control flow structures: Conditional execution (if statements), loops, and functional decomposition
  • Write and understand basic computer algorithms.
  • Find and solve simple computer program bugs.
  • Read python code, and create python programs

Course Materials

We will be using the online book:

This is a very nice resource -- it combines text with interactive elements, and it is completely free!

There are many Python resources online. The "official" python reference is:

The official documentation is great if you want to remember a bit of syntax, but it is not terribly good as an introductory learning resource.

A very good optional Python reference is:

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

Note that this book is not required for the course!

Assignments and Exams

Class assignments will consist of labs, projects, quizzes, midterms, and a final.

  • Labs are small-scale, weekly programming assignments, which will allow you to practice on small, contained aspects of programming. While we will spend time working on labs in class, most students will need to spend additional time outside of class to finish most of the assigned labs.
  • Projects are larger-scale programming assignments. Projects are the most fun portion of the course! Here is where you will do more "real" programming, in order to solve interesting problems. These will primarily be completed outside of class.
  • Quizzes are short, biweekly tests that will help ensure that you are not falling behind on your understanding of the material. These will typically be held every other Friday, and will take no longer than 1/2 hour to complete.
  • Midterms are longer exams, which will test a deeper understanding of the topics in the class. Midterms will take the entire class period.
  • the Final is fairly self-explanatory.

Grading

Breakdown

  • Labs: 20%
  • Projects: 30%
  • Midterm 1: 10%
  • Midterm 2: 10%
  • Quizzes: 10%
  • Final: 20%

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

Min A-: 90%
Min B-: 80%
Min C-: 70%
Min D-: 60%

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.

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 and you can only get credit for in-class exercises by coming to class. Please show up on time to class.

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) 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 assignments and exams. 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 assignments are to be individual and original efforts.

Here is an easy way to make sure that you do not accidentally plagiarize: NEVER LOOK AT THE PYTHON CODE FOR A LAB OR PROJECT OF A FELLOW STUDENT and NEVER LET A FELLOW STUDENT LOOK AT YOUR PYTHON CODE FOR A LAB OR PROJECT

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.

Course Summary:

Date Details Due