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.
A math course at the level of MATH1010, 1020, 1340, or 1440 is a pre-requisite. See MyUI entry.
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:
- Homework assignments (60 points): 11 of them, 6 points each. Your lowest score will be dropped.
- Discussion section assignments (30 points): 11 of them, 3 points each. Your lowest score will be dropped.
- In-class quizzes (78 points): 4 of them (18, 20, 20, and 20 points). Dates: Sep. 15, Oct. 6, Oct. 29, Nov. 19
- Final Exam (32 points), optional. Date: Monday, Dec. 13, 12:30-2:30pm
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%).
- Homework assignments: for full credit, homework must be submitted on time. Late submissions will be accepted up to 24 hours after the original deadline and will receive 60% of the score it would have received had it been on time. Please note that we will grade ONLY your final submission (We won't, e.g., grade both an on-time version and late version and award the highest score.)
- Discussion section assignments: Discussion section assignments MUST be submitted by the published deadline. Late submissions will not be accepted.
- Exams: Except in special circumstances (see the University's policy
on "Excused Absences from Examinations"), there will be no make-up exams.
- Lecture slides from 12/10. Code: testProgramOnInput.py, doesItHalt.py, doesItHaltTest.py.
- Lecture slides from 12/8. Code: kmeans.py.
- Lecture slides from 12/6. Code: sudoku.py.
- Lecture slides from 12/3. Code: twitteraccess.py.
- Lecture slides from 12/1. Code: slider.py, getWebPage.py.
- Lecture slides from 11/29. Code: geocodeonly.py, radioButton.py.
- Lecture slides from 11/17. Code: ccg.py.
- Lecture slides from 11/15. Code: globalVars.py, minimal.py, minimal2.py, simplegui1.py, simplegui2.py, simplegui2wClass.py.
- Lecture slides from 11/12. Code: dfs.py.
- Lecture slides from 11/10. Code: bfs.py.
- Lecture slides from 11/8. Code: basicgraph.py.
- Lecture slides from 11/5.
- Lecture slides from 11/3. Code: lec31a.py, lec31b.py, qsbad.py, testquicksort.py.
- Lecture slides from 11/1. Code: lec30sorts.py, lec30plot.py.
- Lecture slides from 10/27. Code: bsearchAB.py.
- Lecture slides from 10/25. Code: appendvsinsert.py, lec27.py.
- Lecture slides from 10/22. Code: mixupTests.py, lec26coins.py, lec256i.py, montyhall.py.
- Lecture slides from 10/20. Code: catdog.py, catdogV2.py, foo.py, animals.py.
- Lecture slides from 10/18. Code: time2.py, time2Alt.py, circle.py.
- Lecture slides from 10/15. Code: time1.py.
- Lecture slides from 10/13. Code: incorrectRecursionExample.py, ToHcomplete.py, koch.py, pic.py, exceptions.py.
- Lecture slides from 10/11. Code: findSum.py, lec21.py.
- Lecture slides from 10/8. Code: lec20.py.
- Lecture slides from 10/4.
- Lecture slides from 10/1. Code: lec17.py.
- Lecture slides from 9/29. Code: lec16exercises.py, lec16exercisesB.py, lec16split.py.
- Lecture slides from 9/27. Code: lec15.py, dicttest.py, ppldata.py, people.txt, birdDict.py, birdsseen.txt.
- Lecture slides from 9/24. Code: lec14comprehensions.py.
- Lecture slides from 9/22. Code: lec13.py.
- Lecture slides from 9/20. Code: lec12forwhile.py, lec12.py, lec12append.py.
- Lecture slides from 9/17. Code: lec11.py.
- Lecture slides from 9/13. Code: lec9.py, lec9primes.
- Lecture slides from 9/10. Code: collatz.py, lec8loopchars.py, lec8findChar.py, lec8exercises.py.
- Lecture slides from 9/8. Code: lec7while.py, charExamples.py.
- Lecture slides from 9/3. Code: lec6localvars.py, lec6ifs.py, lec6while.py.
- Lecture slides from 9/1. Code: lec5.py.
- Lecture slides from 8/30. Code: lec4.py.
- Lecture slides from 8/27.
- Lecture slides from 8/25.
- Lecture slides from 8/23.
- Homework 1, due Friday, Sept. 3, by 2:00pm
- Homework 2, due Tuesday, Sept. 14, by 8:00am
- Homework 3, due Friday, Sept. 24, by 8:00pm (HW3 solutions)
- Homework 4, due Tuesday, Oct. 5, by 8:00pm (q1 solution)
- Homework 5, due Friday, Oct. 15, by 8:00pm (HW5 solutions and test code)
- Homework 6, due Thursday, Oct. 28, by 8:00pm
- Homework 7, due Monday, Nov. 8, by 2:00pm
- Homework 8, due Thurday, Nov. 18, by 8:00pm
- Homework 9, due Monday, Nov. 29, by 8:00pm
- Homework 10, due Saturday, Dec. 4, by 8:00pm
- Homework 11, due Sundary, Dec. 12, by 8:00pm
- Discussion assignment 11, due Thursday, Dec. 9, by 5:00pm.
- Files for Discussion Assignment 10, due Tuesday, Nov. 16 by 8:00pm: ds10.pdf, ds10game.py.
- Files for no-point-value optional "Discussion Assignment" 9x that takes you step-by-step through process of modifying BFS with distance property you need in HW8: ds9x.pdf, ds9x.py, states.txt.
- Files for Discussion Assignment 9, due Friday, Nov. 12 by 8:00pm: ds9.py, wordsTest.txt, words5.txt.
- Files for Discussion assignment 8, due Wednesday, Nov. 3, by 8:00pm: ds8.pdf (instructions), ds8.py.
- Files for Discussion assignment 7, due Wednesday, Oct. 20, by 8:00pm: ds7.py, stack.py, circle.py. (DS7 solutions)
- Discussion assignment 6, due Tuesday, Oct. 12, by 8:00pm. (DS6 solutions)
.
- Discussion assignment 5, due Wednesday Sep. 29, by 8:00pm.
- Files for Discussion assignment 4, due Wednesday, Sept. 22, by 8:00pm: ds4.py, wordsMany.txt
- Files for Discussion assignment 3, due Tuesday, Sept. 14, by 8:00pm: ds3.py, wordsFew.txt, wordsMany.txt
- Discussion assignment 2, due Thursday, Sep. 9, by 9:00am.
- Discussion assignment 1, due Tuesday, Aug. 31, by 8:00pm.
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.
We will use Python 3 (version 3.7 or newer). Use of Python 2 is not allowed.
- You can download and install Python and IDLE on your own computer from http://www.python.org/download BUT read the next bullet item for a recommended alternative.
- During the second half of the course, we will probably use several third-party modules (libraries). Sometimes these modules are not easy for people to install. A few organizations have created Python
distributions that make access to these modules much easier. For this course, I recommend that you:
- download and install the Anaconda distribution The Anaconda package distribution contains several tools. For this class, use the Spyder IDE that can be launched from within Anaconda-Navigator app.
It is free, works on Macs, PCs, and Linux machines, and provides super easy access to a large number of Python modules.
Scores are available on ICON only.
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 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).