CS2110: Programming for Informatics

Spring 2021

11:30-12:20 MWF, on line


Instructor: James Cremer, 101P MLH, james-cremer@uiowa.edu, 319-321-1893
Office hours: T 1-2, Th 1-2 and by appointment.

TA: Jon Rusert, jonathan-rusert@uiowa.edu
Office hours: W 2-4, F 1-2

Discussion sections:

Section A01	2:00-3:15 T		On line
Section A02	3:30-4:45 T		On line
The TA will lead the discussion section meetings, help grade some of the homework, and hold regular office hours.

Recent Announcements (last updated 5/7/21)


Prerequisites


CS1110 is a prerequisite (i.e. you must already have completed CS1110 or something equivalent). A math course at the level of MATH1010, 1020, 1240, 1340, or 1440 is a corequisite (i.e. if you haven't already completed such a course, or placed into a higher level course by exam, you must be enrolled in one right now)

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 critical confidence in their ability to to be able to solve real problems via programming. In additional to basic programming concepts, the course provides an introduction to object-oriented programming, algorithmic design/analysis, and to programming with the web/networks 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 overall structure of the course is:

Textbooks

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 "CS2110S21" 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.





Grading

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

Lateness/make-up policy

For full credit, homework must be submitted on time. Late submissions will be accepted only when these two conditions are met: 1) a first version (even if minimal work has been completed) is submitted by the regular deadline 2) the "late" and presumably improved version is submitted within 24 hours of the original deadline. The score for the homework will be the higher of the first submission score and 80% of the score on the late version.

Starting early is important, especially for programming assignments. Except in special circumstances (see the University's policy on "Excused Absences from Examinations"), there will be no make-up exams.

Lecture Notes and Other Class Supplements

Discussion section assignments

Homework assignments

Quizzes and exams

Computers available

For implementing homework assignments, there are Windows and Linux PCs in 301 MLH, though most of you will find it most convenient to use Python on your own machines.

Documenting and submitting programs

For assignments that contain programming components, you must submit files via ICON. Homework assignments will usually give any special details. However, in general, Python code must be submitted in .py files (not .txt, .rtf, .doc, etc.)

If the assignment contains multiple files, you should put them all in one folder, zip it, 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.8 or newer recommended). No versions of Python 2 are acceptable.

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, etc. (Note that the complaint policy mentions the DEO. The DEO, or Department Chair, for the Computer Science Department is Professor Alberto Segre).