CS1210: Computer Science I: Fundamentals

Fall 2021

2:30-3:20 MWF, on-line via Zoom (find the Zoom item in the AAA/lecture section of ICON)

Instructor: James Cremer, 101P MLH, james-cremer@uiowa.edu, 319-321-1893
Zoom office hours: M 3:30-4:30, Th 1:00-2:00, and by appointment (find the Office Hours Zoom link on ICON).

TAs: TAs will lead discussion sections, hold online office hours, and help grade homework and exams.
Haakon Larsen, haakon-larsen@uiowa.edu
Mir Rahsin Mulk, mir-mulk@uiowa.edu
Lucas Spain, lucas-spain@uiowa.edu

TA Office Hours:

Mondays:    11:00-12:30pm (Rahsin)
Wednesdays: 9:00-10:00am (Lucas)
            3:00-4:30pm (Rahsin)
Thursdays:  2:00-4:00pm (Lucas)
            3:30-4:30pm (Haakon)
Fridays:    10:00am-Noon (Haakon)

ICON site. The course ICON site will be used for: 1) providing links to live Zoom lectures and lecture recordings, 2) submitting homework assignments, 3) posting grades, and 4) posting discussion forum questions. All other course information - lecture notes, homework assignments, etc. - will be posted on this web page.

Recent Announcements (last updated 12/10/21)


A math course at the level of MATH1010, 1020, 1340, or 1440 is a pre-requisite. See MyUI entry.

Course goals and structure

This course has one primary goal - to provide a core of computer science programming concepts and skills, and enough practice using them, that students will develop confidence in their ability to think computationally and to be solve problems via programming. Beyond basic programming concepts, the course provides an introduction to object-oriented programming, algorithmic design and analysis, web programming, and graphical user interfaces. Python is the language used in the course, but we hope that students will understand the underlying concepts well enough to be comfortable picking up other languages.


The primary textbook for this course is
How to Think Like a Computer Scientist. Learning with Python: Interactive Edition 2.0, by Brad Miller, David Ranum, Jeffrey Elkner, Peter Wentworth, Allen B. Downey, Chris Meyers, and Dario Mitchell. It is free but requires registration and login. When you register, enter "CS1210F21" in the Course Name field. This book is a "mash-up" of a well-known the "open-source" text listed below. This interactive version intersperses a variety of automatically checked questions, exercises, and coding examples with the a re-organized and modified version of the Think Python (1st edition) text.

The interactive book above is based on Think Python, 2nd edition by Allen Downey. If you do not want to use the interactive version, you can use this one instead. It is a free well-known book that has been used by many people and courses. Free HTML and downloadable PDF versions are available at thinkpython2.com. You can purchase a printed version at Amazon.


Course grades will be based on the five components below. 200 points possible: Plus/Minus grading will be used for the course.

The initial grading scale for the course is:
A- to A+: 85%+
B- to B+: 70%+
C- to C+: 50%+
D- to D+: 40%+

The exact percentages for each grade A+, A, A-, etc. will be published near the end of the course. It is possible that the minimum percentage for a grade might be lowered a point or two near the end of the course (e.g. the minimum score for a B- might be lowered to 69%).

Lateness/make-up policy

Lecture Notes and Other Class Supplements

Homework assignments

Discussion section assignments

Exam solutions

Computers available

There are Windows PCs with Python installed in 301 MacLean Hall. However, we recommend that you install and use Python on on your own machine. Python works well on MacOS, Windows, and Linux, so you should have no problem whatever kind of machine you have.

Documenting and submitting programs

For assignments that contain programming components, you must submit files via ICON. Read homework assignments carefully to make sure you submit the right thing(s). For example, some assignments require that you should submit one Python file, while other assignments require submitting multiple files.

Python code must be in .py files (not .txt, .rtf, .doc, etc., files)

Every homework assignment must contain the hawkID() function that will return your own HawkID when executed. See the template here: hawkIDtemplate.py.

If the assignment contains multiple files, you should put them all in one folder, zip that folder, and submit the one .zip file to ICON.

Note: It is very important that programs be well-written and clear. Programs should be readable by people, not just computers. Coding style and organization may be considered in grading programs. Your code should include comments where appropriate, but avoid the approach of ritualistically filling your code with unhelpful (e.g. "this is a variable") or imprecise (e.g. "this loop goes around and around until it figures out the answer") comments. Ambiguous or inaccurate comments can be worse than none at all.

Course software

We will use Python 3 (version 3.7 or newer). Use of Python 2 is not allowed.

Scores and Grades

Scores are available on ICON only.

Other Online Resources

Academic Honesty

Academic dishonesty will not be tolerated. Under no circumstances should you pass off someone else's work as your own. This applies to code or other material that you might find on the internet.

In this class, unless specifically allowed otherwise for a particular assignment, you may not collaborate on homework assignments; you need to complete assignments on your own.

We do want students to talk to each other about concepts, solution approaches, and other ideas related to the coursework and assignments. However, it is important to ensure that these discussions do not result in a written or electronic record, nor exchange or sharing of written or electronic material.

Use of code from the web is also not allowed unless a particular assignment specifies otherwise. Even in cases where it is appropriate to incorporate code from the Internet or other reference source, such inclusion must be properly cited/credited (this is often done by inserting comment lines prior to the borrowed code stating where you got them, providing a URL, etc.)

Please note: We regularly use available software plagiarism detection tools to test originality of homework submissions.

See the CLAS Code of Academic Honesty for additional information.

Additional syllabus information required by UI/CLAS

Additional UI and College of Liberal Arts and Sciences policies relating to this class are given here. This includes information about the administrative home for the course, accommodations for disabilities, complaint procedures, Zoom recording privacy policy, etc. (Note that the complaint policy mentions the DEO. The DEO, or Department Chair, for the Computer Science Department is Professor Alberto Segre).