CS 102 - Section B - Introduction to Computer Science


General Course Information

Instructor: Prof. Rob Marano
Email: rob@cooper.edu
Semester of the course: Fall 2020
Dates of the course: 1 September 2020 – 15 December 2020

Course Description

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).

Course Prerequisites

Being a Cooper Union freshman engineering student serves as the minimum prerequisite.

Course Structure/Method

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.

Course Learning Outcomes

Upon successful completion of this course, students will be able to:

  1. Set up a working and extensible C development environment using the Linux operating system.
  2. Be able to demonstrate working understanding of the main C mechanisms for in-memory structures, computation, network communication, and external storage.
  3. Understand and demonstrate basic programming mechanisms of Python 3, including graphing numerical data.
  4. Collaborative programming using GitHub for source code and project documentation, in addition to Kanban agile management.

Communication Policy

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.

Course Expectations

Class Preparation

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.

Attendance

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.

Materials

Reference Books

Textbooks are not required for the course, but they may be useful to have. These are some we the CS102 professors suggest.

Software

All software will be open source.

Assessment Strategy and Grading Policy

All assignments must be completed by the end of this course in order to receive a passing grade.

AssignmentTitle PointsDue 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 Project10 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.

  1. Collaborate on teams of 2 people, not less, not more.
  2. Source code to be maintained in a GitHub repository per team.
  3. Design and document in GitHub Wiki the software architecture and source code of your team’s MVP.
  4. Breakdown the MVP design in manageable sets of tasks, and track high-level via GitHub Project.
  5. Document the design of each Python subsystem for your MVP in its appropriate GitHub Wiki section.
  6. Demonstrate the MVP as part of your team’s final presentation.

Course Outline

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.