On Friday, August 28, all registered students are sent a Gradescope registration invitation to the email on record with CUNYFirst. If you did not receive the email or would like to use a different account, fill out the form on Brightspace. Include on the form that you not receive a Gradescope invitation, your preferred email, and your EmpID. We will manually generate an invitation. As a default, we use your name as it appears in Brightspace/CUNYFirst (to update CUNYFirst, see changing your personal information). If you prefer a different name for Gradescope, include it, and we will update the Gradescope registration.
See the Homework page for the list of exercises for the class.
Each week, you are expected to work through the associated Online Lab. Target dates for completing these are included. There is no deadline for completing these, but the homework, quizzes and coding reviews are based on the information in the lab.
Lab 0: Setting Up.
Target date: Tuesday, September 1.
Learning Objective: to set up tools for the semester and to read through the syllabus.
Lab 1: First Program & Turtles.
Target date: Friday, September 4.
Learning Objective: to write short programs involving output and the turtle library and submit those to the Gradescope.
Lab 2: Strings & Loops.
Target date: Thursday, September 10.
Learning Objective: to input and manipulate strings, as well as looping through lists and strings.
Lab 3: Representing Colors & Manipulating Images.
Target date: Wednesday, September 11.
Learning Objective: to use the three different formats for colors (name, RGB & hexadecimal) and manipulate images using standard libraries.
Lab 4: Getting Input & Decisions.
Target date: Friday, September 25.
Learning Objective: to use decisions to manipulate images and lists (list comprehension) as well as get user input.
Lab 5: Logical Expressions & Circuits.
Target date: Friday, October 2.
Learning Objective: to translate between logical expressions and circuits, as well as understand binary numbers.
Lab 6: Pandas & Github.
Target date: Friday, October 9.
Learning Objective: to use the pandas library to read in CSV files, manipulate columns, and plot data, as well as be familiar with GitHub.
Lab 7: NYC OpenData & Functions.
Target date: Friday, October 16.
Learning Objective: to obtain and analyze NYC OpenData using pandas and to write stand-alone programs with functions.
Lab 8: Top Down Design & Dictionaries.
Target date: Friday, October 23.
Learning Objective: to write programs in a top-down design fashion and use dictionaries.
Lab 9: Spatial Maps & Code Quality.
Target date: Friday, November 6.
Learning Objective: to create spatial maps and improve debugging skills.
Lab 10: Indefinite Loops & Random Numbers.
Target date: Friday, November 13.
Learning Objective: to use indefinite loops in programs and understand canonical Unix tools (git and vi).
Lab 11: Machine Language and Unix Pipes.
Target date: Friday, November 20.
Learning Objective: to write simple machine language programs (MIPS) & link shell commands using pipes.
Lab 12: Getting Started with C++.
Target date: Tuesday, November 24.
Learning Objective: to write C++ programs with I/O, variables and definite loops and list file types in Unix.
Lab 13: C++ Decisions & Indefinite Loops.
Target date: Friday, December 4.
Learning Objective: to write C++ programs that using decisions and while loops and use shell commands to find versions and documentation.
Each week, there will be a paper quiz on the lecture notes, reading, submitted programs, and online lab exercises.
There will also be weekly walk-throughs ("code reviews") where you explain one of the programs you wrote for homework to a teaching assistant. Code reviews are integral to software design and development: explaining your coding decisions and convincing another it works correctly leads to improvements in the design and lessens unexpected behaviors and errors.
Unless otherwise noted, all quizzes and code reviews are in-person in 1001E HN. There is up to 15% extra credit for completing the quiz and code review before the due date: 5% for 1 day early, 10% for 2 days early, and 15% for 3 or more days early.
| Week: | Start Date: | 3 Days Early: (15% Extra Credit) | 2 Days Early: (10% Extra Credit) | 1 Day Early: (5% Extra Credit) | End Date: | Quiz Topics: | Code Review Topics: |
|---|---|---|---|---|---|---|---|
| #0 | Tuesday, August 25 | None | None | None | Tuesday, September 1 | Quiz 0: On Brightspace: covers syllabus. | None |
| #1 | Tuesday, September 1 | Wednesday, September 2 | Thursday, September 3 | Friday, September 4 | Tuesday, September 8 | Quiz 1: Turtles and Loops: Focuses on turtle commands and for-loops. Use Lab 1 to study. | Code Review 1: Hello (HW 1) |
| #2 | Wednesday, September 9 | Wednesday, September 9 | Thursday, September 10 | Monday, September 14 | Tuesday, September 15 | Quiz 2: Looping through strings and using ASCII values; Unix commands: files & directories; see Lab 2. Quizzes include reference sheet with ASCII chart. | Code Review 2: Using Turtle Library (HW 3 & 5) |
| #3 | Wednesday, September 16 | Wednesday, September 16 | Thursday, September 17 | Friday, September 18 | Tuesday, September 22 | Quiz 3: Color formats, slicing, and Unix commands from Lab 2 and Lab 3. | Code Review 3: String Methods (HW 6 & 7) |
| #4 | Wednesday, September 23 | Thursday, September 24 | Friday, September 25 | Monday, September 28 | Tuesday, September 29 | Quiz 4: Inputting, decisions, & list comprehensions. See Lab 4. | Code Review 4: Definite Loops (HW 8 & 10) |
| #5 | Wednesday, September 30 | Thursday, October 1 | Friday, October 2 | Monday, October 5 | Tuesday, October 6 | Quiz 5: Manipulating strings and lists with split() and join(); Loops & Turtles. See HW 11-15. | Code Review 5: Getting Input (HW 11 & 16) |
| #6 | Wednesday, October 7 | Wednesday, October 7 | Thursday, October 8 | Friday, October 9 | Tuesday, October 13 | Quiz 6: Converting between binary, decimal, and hexadecimal; Logical Circuits. See Lectures 2 & 5 and Lab 5. | Code Review 6: Images (HW 18 & 19). HW 19 modifies the map-making program from Lab 4, so, you can start with that program loaded in IDLE for the code review. |
| #7 | Wednesday, October 14 | Thursday, October 22 | Friday, October 23 | Monday, October 26 | Tuesday, October 27 | Quiz 7: Manipulating CSV files with Pandas (Lab 6) and Unix paths (Lab 4 and Lab 5). | Code Review 7: Logical Expressions & Circuits (HW 22 & 23). First draw in CircuitVerse, then give logical expression. |
| #8 | Wednesday, October 28 | Thursday, October 29 | Friday, October 30 | Monday, November 2 | Tuesday, November 3 | Quiz 8: Decisions, Python's zip (see Lab 4, Lab 5, and Lab 7). | Code Review 8: Decisions (HW 24 & 26). HW 24 modifies the turtle string program, so, you can start with that program loaded in IDLE for the code review. |
| #9 | Wednesday, November 4 | Thursday, November 5 | Friday, November 6 | Monday, November 9 | Tuesday, November 10 | Quiz 9: Functions (Lab 7) and Regular Expressions (Wildcards) in Unix (see Lab 8). | Code Review 9: Pandas (HW 28 & 33). |
| #10 | Wednesday, November 11 | Thursday, November 12 | Friday, November 13 | Monday, November 16 | Tuesday, November 17 | Quiz 10: Dictionaries (see Lab 8). | Code Review 10: Functions (HW 35 & 38) |
| #11 | Wednesday, November 18 | Thursday, November 19 | Friday, November 20 | Monday, November 23 | Tuesday, November 24 | Quiz 11: Spatial Data & Finding Errors (Lab 9). | Code Review 11: Dictionaries (HW 39 & 40) |
| #12 | Monday, November 29 | Monday, November 29 | Tuesday, November 30 | Wednesday, December 1 | Thursday, December 2 | Quiz 12: Indefinite Loops and Unix Scripts (see Lab 10) | Code Review 12: Pandas & Plotly (HW 44 & 48) |
| #13 | Friday, December 4 | Friday, December 4 | Monday, December 7 | Tuesday, December 8 | Wednesday, December 9 | Quiz 13: Machine Language (see Human Resource Machine in Lab 11) & C++ (see Lab 12). | Code Review 13: Indefinite Loops (Program 47) |
| #14 | Wednesday, December 9 | Wednesday, December 9 | Thursday, December 10 | Friday, December 11 | Monday, December 14 | Quiz 14: C++ (see Lab 12 and Lab 13). | Code Review 14: C++ (HW 56 & 58) |
The final exam is required. It is comprehensive, covering all the material of the course.
On the day of the exam, there will be two parts to fill out:
Both the seat slip and the final exam must be submitted.
The final exam has 10 questions, each worth 10 points. The best way to study is to work through the problems we have done throughout the semester. The questions are very similar to the homework, quizzes, examples from lecture, labs, and the reading.
On the last lecture, Tuesday, December 8, we will have a mock final exam. It will be similar to the actual final exam, except that the time will be shorter, since lecture is 1 and 15 minutes while the final exam is 2 hours. An answer key will be available later that afternoon.
Below are the past exams, along with answer keys. To study for the final exam, choose a past exam and work through it as if you were taking the exam but allow yourself 1 hour (instead of the 2 hours for the real exam). When done, check your answers with the answer key, adjust your note sheet for topics and key ideas that would be useful, and repeat.