CSci 227 Syllabus    Resources    Coursework



Coursework
CSci 227: Programming Methods
Department of Computer Science
Hunter College, City University of New York
Spring 2024


Programming Assignments     Labs     Classwork     Code Review     Written Quizzes     Final Exam    

All students registered by Wednesday, 24 January are sent a Gradescope registration invitation to the email on record on their Blackboard account. If you did not receive the email or would like to use a different account, write to csci227@hunter.cuny.edu. Include in your email 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 Blackboard/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.



Programming Assignments

See Programming Assignments page for a list of the coding exercises for the class.




Code Reviews & Written Quizzes

Quizzes:

Every week, there will be a quiz to be taken in 1001G HN, on the lecture notes, reading, submitted programs, and programming assignments.

Code Reviews:

Every week, there will be an in-person code review on the recently submitted programs.

Calendar:

Unless otherwise noted, all quizzes and code reviews are in-person in 1001G HN.

Week: Quizzes Code Reviews
Topics Deadline Topics Deadline
0: Syllabus
(On Gradescope)
1/31 None
1: Academic Integrity 2/8 HR: Python Loops 2/8
2: Control Structures & Data Types 2/15 HR: Leap Year 2/15
3: Python Collection Data Types 2/22 LC 1 (Two Sum) 2/22
4: Running Times & Using Standard Libraries (String Methods) 2/29 LC 344 (Reverse String) 2/29
5: Functions & Recursion 3/14 LC 69 (Sqrt(x)) 3/14
6: Linear Data Structures: Array Implementations & Linked Lists 3/21 LC 2 (Add Two Numbers) 3/21
7: Stacks, Queues, Deques 3/28 LC 2073 (Time Needed to Buy Tickets) 3/28
8: Maps ADT's 4/4 LC 15 (3Sum) 4/4
9: Searching 4/11 LC 374 (Guess Number Higher or Lower) 4/11
10: Sorting 4/18 LC 2418 (Sort the People) 4/18
11: Trees & Heaps 5/3 LC 215 (Kth Largest Element in an Array) 5/3
12: Binary Search Trees 5/9 LC 701 (Insert Into a Binary Search Tree) 5/9
13: Graph ADT's 5/15 LC 997 (Find the Town Judge) 5/15

Note: Some of the deadlines in May (marked in boldface font) are adjusted for lab closures in the CUNY Academic Calendar.



Labs

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 programming assignments, quizzes and coding reviews are based on the information in the lab.

Lab 0: Set Up & Python Basics.Target date: Wednesday, 31 January.
Learning Objective: to set up accounts and IDEs for the semester and to refresh students' knowledge of Python basics learned in CSci 127.

Lab 1: Submitting Programs & Collection Data Types.Target date: Wednesday, 7 February.
Learning Objective: to use a linter to submit programs in good style and to understand the built-in collection data types.

Lab 2: Dictionary & String Methods.Target date: Wednesday, 13 February.
Learning Objective: to introduce dictionaries and container classes in core Python and recap I/O.

Lab 3: File I/O & Algorithm Analysis.Target date: Wednesday, 20 February.
Learning Objective: to recap file I/O techniques and to benchmark and describe execution time of simple programs.

Lab 4: Functions & Recursion.Target date: Wednesday, 6 March.
Learning Objective: To use recursion, exception handling, and parameters (including keyword arguments) in designing functions.

Lab 5: Classes & Objects.Target date: Wednesday, 13 March.
Learning Objective: to understand and implement classes, and to be familiar with standard Python modules.

Lab 6: Linear Data Types.Target date: Wednesday, 20 March.
Learning Objective: to understand the abstract data types stack and list and to be able to implement using linked lists.

Lab 7: Queues & Deques.Target date: Wednesday, 27 March.
Learning Objective: to understand the abstract data types queues & deques and to be able to use them in solving problems.

Lab 8: Map ADT's.Target date: Wednesday, 3 April.
Learning Objective: to understand the map abstract data types and to be able to use it in solving problems.

Lab 9: Searching.Target date: Wednesday, 10 April.
Learning Objective: to understand canonical searching algorithms and their running times.

Lab 10: Sorting.Target date: Wednesday, 17 April.
Learning Objective: to understand canonical sorting algorithms and their running times.

Lab 11: Trees & Heaps.Target date: Wednesday, 22 April.
Learning Objective: to understand the tree ADT and the concept of heaps to store data.

Lab 12: Binary Search Trees & Graphs.Target date: Wednesday, 8 May.
Learning Objective: to use binary search trees to efficiently store information and to understand the graph ADT.

Lab 13: More on Graphs.Target date: Wednesday, 15 May.
Learning Objective: to be familiar with some canonical graph algorithms.


Final Examination

The final exam is required. It is comprehensive, covering all the material of the course.


Exam Rules:

During the exam, you should have with you:

During the exam:


Exam Format:

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 classwork, programming assignments, quizzes, examples from lecture and the reading.

On the last lecture, Wednesday, 15 May, 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 on Blackboard.