Instructor: Prof. Rob Marano
Email: rob@cooper.edu
Semester of the course: Fall 2020
Dates of the course: 1 September 2020 – 15 December 2020
Concepts in computer science are presented in the context of programming in C, with a brief introduction to Python. Topics include variables, selection statements, loops, functions, structures, pointers. Multiple programming projects are assigned. 2 credits. 2 hours per week (30 total hours).
Being a Cooper Union freshman engineering student serves as the minimum prerequisite.
Lecture/Lab. This class meets remotely via Microsoft Teams on 9/1, 9/8, 9/15, 9/22, 9/29, 10/6, 10/13, 10/20, 10/27, 11/3, 11/10, 11/17, 12/1, 12/8, and 12/15, for a total of 15 sessions. Note that 11/24 we do not meet. The class meets from 6:00 to 8:00 pm on all days.
Upon successful completion of this course, students will be able to:
The best way to contact me is via email then by instant messaging (TBD by end of first class). I will do my best to respond within 24 hours. Communication and participation in class is not only encouraged, but required.
Each session will consist of two components: discussion and lab. Discussion consists of a mix of lectures, programming examples, and question-driven group analysis of one or more large programming problems. Lab will consist of either group or individual work on exercises or projects. Questions arising during lab may be used to fuel additional discussion as time permits.
Success as a student begins with attendance. Class time is not only for learning new skills, but also for practicing what you have learned. Some assignments and demos may be completed in class, but practice and study are required outside of class. Students are expected to attend classes regularly, arrive on time, and participate.
I take attendance during every session, and it forms part of your grade. Students are encouraged to e-mail me when they are absent. Students are responsible for all academic work missed as a result of absences. It is at my discretion to work with students outside of class time in order to make-up any missed work.
Textbooks are not required for the course, but they may be useful to have. These are some we the CS102 professors suggest.
All software will be open source.
All assignments must be completed by the end of this course in order to receive a passing grade.
Assignment | Title | Points | Due Date |
1 | HW 1 | 5 | 09/15/2020 |
2 | Quiz 1 | 10 | 09/15/2020 |
3 | HW 2 | 5 | 09/29/2020 |
4 | Quiz 2 | 10 | 10/06/2020 |
5 | HW 3 | 5 | 10/16/2020 |
6 | Quiz 3 | 10 | 10/27/2020 |
7 | HW 4 | 5 | 11/6/2020 |
8 | Quiz 4 | 10 | 11/10/2020 |
9 | Python Final Project | 10 | 12/11/2020 |
10 | C Final Project | 30 | 12/18/2020 |
11 | Class attendance | 30 | two points earned per attended class |
12 | Class participation | 20 | qualitative points earned for contributing to classes |
Final Projects MVPs
Two final projects, one for Python and one for C, the latter should be more complex in size and
scope than the former. The following items pertain only to the C final project, whereas the Python
final project is to done per student handing in working code in his or her respective GitHub
repository.
Session 1: 09/01/2020, 6pm-8pm
Description: Course Overview; Intro to Linux plus gcc and make as your C development
environment; Get your "Hello, World!" mojo going; and collaborating with git using GitHub.
You will become a Command Line Master.
Assignments: No homework, per se. Read, review, research, learn...
Session 2: 09/08/2020, 6pm-8pm
Description: More Git; Variables; Types; Operators.
Assignments: Receive HW 1, due on 9/11 at 11:59:59pm; Study for Quiz 1 on 9/15.
Session 3: 09/15/2020, 6pm-8pm
Description: More on Operators; Precedence; Conditional Statements; basic input and output
(I/O); the Switch statement. Quiz 1 during last 20 minutes of class.
Assignments: No homework, per se. Read, review, research, learn... Form your two-student final
C project team.
Session 4: 09/22/2020, 6pm-8pm
Description: Loops; basic Arrays; basic functions.
Assignments: Receive HW 2, due on 9/25 at 11:59:59pm; Brainstorm ideas for your complex,
multi-stage final C project with your teammate.
Session 5: 09/29/2020, 6pm-8pm
Description: More on Arrays; Functions again and again; Intro to Tic-Tac-Toe.
Assignments: Study for Quiz 2 on 10/6.
Session 6: 10/06/2020, 6pm-8pm
Description: Mas Tic-Tac-Toe. Quiz 2 during last 20 minutes of class.
Assignments: No homework, per se. Read, review, research, learn... Begin to design your MVP
for your final C project with your teammate.
Session 7: 10/13/2020, 6pm-8pm
Description: Pointers? We don’t need no stinking pointers. Arrays in a new light...
Assignments: Receive HW 3, due on 10/16 at 11:59:59pm.
Session 8: 10/20/2020, 6pm-8pm
Description: Yes, more on Pointers and Arrays.
Assignments: Study for Quiz 3 on 10/27.
Session 9: 10/27/2020, 6pm-8pm
Description: The CLI and Command-line arguments; intro to Data Structures; Quiz 3 during last
20 minutes of class.
Assignments: No homework, per se. Read, review, research, learn... Continue designing your
MVP for your final C project with your teammate; start your project structure with the Makefile,
file breakdowns, etc.
Session 10: 11/03/2020, 6pm-8pm
Description: Mas data structures; Mas on git and GitHub; Formal discussion on Final C
Project, whose final presentation are on 12/15 and final code repo due 12/18 11:59:59pm.
Assignments: Receive HW 4, due on 11/6 at 11:59:59pm. Study for last quiz, Quiz 4 on 11/10.
Session 11: 11/10/2020, 6pm-8pm
Description: And now for something completely different, [Monty] Python introductions, along
with Jupyter notebooks. Quiz 4 during last 20 minutes of class.
Assignments: No homework, per se. Read, review, research, learn... Write you (pseudo)code your
MVP for your final C project with your teammat.
Session 12: 11/17/2020, 6pm-8pm
Description: Python Functions; Python Modules.
Assignments: Brainstorm individually and begin your Python final project. Remember it’s to be
short, sweet, and to the point. Perhaps usable in other classes. Study ahead to work over break.
Session 13: 12/01/2020, 6pm-8pm
Description: Files and Python; the Network and Python.
Assignments: Python final project due 12/11 11:59:59pm.
Session 14: 12/08/2020, 6pm-8pm
Description: Data, Pandas, Python, and Matplotlib - taming my data and visualize it.
Assignments: Remember, Python final project due 12/11 11:59:59pm.
Session 15a: 12/15/2020, 6pm-8pm
Description: Final C final project presenatations; you get 10 minutes per group of students to
present and demonstrate working code.
Assignments: Final repo for source code and presentations due 12/18 at 11:59:59pm. Feel free to
record your video presentation again if you want me to renew your grade from class presentation.
Make video available on YouTube.
Session 15b: 12/18/2020, 11:59:59pm
Description: Final, working source code due on your team’s main branch.
See https://github.com/github/renaming.
Assignments: Officially hand-in your two-person team C project.