Course Overview

This is an Introductory Computer Science Course. This course is designed for people with no prior programming experience. It covers the fundamental concepts of computer programming using the Python programming language.

Class Time, Location

CRN32577 CS110A Section 541: 6:30 PM - 08:20 PM Chinatown/North Beach Campus | Chinatown/North Beach | Room 1202

First class: Monday, January 13th

Office Hours

As posted here

Prereqs, Advisories, Proficiency Expectations

If you have never programmed before, you are in the right place! This class has no prerequisites. However, as with other classes in the department, this class assumes basic proficiency in English and math. The specific recommendation is that you have, at minimum, skills at the level of Math 60 or Math 92 (algebra) and ESL 160 before taking this class.

Considering skipping 110A? If you can complete the following task in any language, you can enroll in any of the B-level courses. If you are unable to complete the task, please talk to me about whether you should instead take 110A.

Write a complete function/method that expects a single integer parameter. If the number is positive, print a “Hello world!” message that number of times. Otherwise, print a message such as: “Error: number must be positive!” Of course, you will be able to do much more than this after taking CS110A.

Email Expectations

I do not regularly check e-mail for student discussion. I expect in-class presence and discussion so that we may learn from each other. Specific programming questions online can be directed toward TAs in the course and as comments in homework submission.

Reading Materials

You do not need to buy a textbook for this course. All readings are free and online. However, some suggestions for additional resources are:

You can find the main textbook for free online here:


Everything you are required to do for the class will be posted on the class Canvas page, accessible here:

You'll need your RamID (the username and password, not the ID card) to log into Canvas. If you don't have a RamID yet, you can claim one here:

Finally, most of the exercises and projects you complete can be developed on this website:

Course Outcomes

Upon completion of this course, a student will be able to:

Since this class was adapted from one taught in C++, some of the vocabulary will be a bit different. For example, "call by reference" and "call by value" aren't built into Python the way they are built into C++. Also, we will be studying Python lists and tuples, which both serve similar functions as arrays.

Full Course Calendar

A full calendar with lessons, projects, due dates, quiz dates, and the final exam date can be found on the course page on Canvas. I'll announce on Canvas if it changes. Please refer to this often!


We no longer use add codes. As of 2020, if you wish to add a class, go into Web4 on the first day of class. Then, I should be able to approve your addition using the "Class Add Authorization".


All materials for this course will be available online and the class is most rich if you show up in person. I will do my best to take attendance at the beginning of class. If you are marked absent for three times in a row or more and have not told me why, I may drop you. You may also be dropped if you are not present on the first day of class without having told me why.

Participation in exercises and activities during class time: 10%
Programming Labs (5-10 pts each) 40%
Test #1 (25 pts): 10%
Test #2 (25 pts): 10%
Test #3 (25 pts): 10%
Final Exam (50 pts): 20%
Midterm Grades

After week 9, I will report your grade as it would be after the last day of week 9. This will include all in-class quizzes taken by and work due by the last day of week 9. I will drop one in-class quiz score before calculating your middle-of-the-term grade. This grade is reported to the college, but only so you can provide other institutions with a report on your progress. It does not affect your academic history.

Group Work and Academic Dishonesty

On the programming projects, self-check quizzes, and exercises for each lesson, you are welcome to work with other students. Make sure to attribute credit to one another in the header of your programs. I will not check for similarity. However, be warned: if you work in a group and you do not understand the work your group has done, it will almost certainly show up on your quiz and final exam results

You may not collaborate on in-class quizzes and the final exam

Disability Accomodations

Students with disabilities who need accommodations are encouraged to contact me. Disabled Students Programs and Services (DSPS) is available to facilitate the reasonable accommodation process. The DSPS office is located in the Rosenberg Library, Room 323 and can be reached at (415) 452-5481.

Anti-Discrimination Policy

The San Francisco Community College District is committed to the principles of equal opportunity, and the prevention of discrimination and harassment in any program or activity of the District on the basis of race, color, ancestry, national origin, ethnic group identification, religion, age, gender, gender identity, marital status, domestic partner status, sexual orientation, disability or AIDS/HIV status, medical conditions, or status as Vietnam-era veteran, or on the basis of these perceived characteristics, or based on association with a person or group with one or more of these actual or perceived characteristics.

If you believe you have been subject to discrimination, please contact Dr. Leilani Battiste, Title 5/EEO/ ADA/Title IX Compliance Officer at (415) 452-5053 or

Homework Schedule (subject to change throughout semester)


Homework Schedule

  • Programming Lab 1: Hour of Code
  • No class on Monday 1/20 Martin Luther King Day
  • Programming Lab 2: Hello World
  • Programming Lab 3: Muni Ridership
  • Programming Lab 4: Programming with Turtle Graphics
  • Programming Lab 5: For Loop Interview Question
  • No class on Monday 2/17 Washington Day
  • Test #1 Review: Wednesday, February 19th
  • Test #1
  • Programming Lab 6: Parallelogram
  • Programming Lab 7: Rock Paper Scissors
  • Programming Lab 8
  • Test #2: Wednesday, March 25th
  • No class 3/30, 4/1 Spring Break
  • Programming Lab 9
  • Programming Lab 10
  • Programming Lab 11
  • Programming Lab 12
  • Test #3: Monday, May 4
  • Extra Credit
  • Review for Final Exam
  • Final Exam: Monday, May 18th