Introduction to Computer Science
CS-UH 1001

Sections 3 and 4



Professor Sana Odeh

Clinical Professor
Faculty Liaison for Global Programs of Computer Science
Computer Science Department
Courant Institute of Mathematical Science
New York University, New York
Affiliated Faculty,  NYU Abu Dhabi
 


Email sana [AT] nyu.edu
Office

NYU NY: 321 in Courant, 251 Mercer Street, Courant Institute, NYU, 251 Mercer Street, New York University

NYUAD: C1-154

Help

Whenever you have a question about the course material, please feel free to see me during my office hour via zoom, or write me an email message. If at any time you feel that you are falling behind or are overwhelmed by the material, let me know: I will be very happy to help you.



Class Time and Office Hour
 

Class Time

Section 3




Section 4

Please note that the first few weeks of this class will be via zoom (zoom link is posted in NYU's Brightspace!

CS-UH 1001 Intro to Computer Science (section 3)
(1:15 hours lecture followed by a 1:15 hours lab )
Lecture: Mon/Wed 1:15 – 2:30pm
Lab: Mon/Wed 2:40 - 3:55 PM


CS-UH 1001 Intro to Computer Science (section 4)

(1:15 hours lecture followed by a 1:15 hours lab )
Lecture: Mon/Wed 2:40 – 3:55pm
Lab: Mon/Wed 4:05 - 5:20 PM

Office Hours Mon/Wed 5:30-6:30PM Or other times by appointments

 



Course Description:
This course introduces students to the various topics within, and applications of, the field of computer science. The goal of the course is to teach students how to think like a computer scientist. The single most important skill for computer scientist is problem solving. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately.
On one level this course teaches students programming concepts, in particular, binary logic and algorithmic problem solving. On another level this course uses programming as a means to an end, focusing on understanding the fundamental problems within computer science, such as looping, searching, sorting, and backtracking. As programming skills are mastered, students are then introduced to various advanced computer science topics, such as object-oriented programming and graphical user interfaces. The course concludes with a group-based project.

Learning Outcomes:
Students who successfully complete this course will be able to:

  • Understand concepts of computer science and programming languages.
  • Write computer programs using the Python programming language.
  • Understand the procedural and object-oriented programming both conceptually and practically, and be able to make critical arguments about their differences.
  • Use abstraction to think algorithmically and solve problems programmatically.
  • Present algorithmic and programmatic solutions.

Teaching and Learning Methods:
There are 4 main teaching and learning methods employed in this course:

  • Class discussions. During each class, numerous questions will be posed by the Instructor to help students engage in the topics and to promote discussion.
  • Group programming. Some class discussions will be interactive, with the instructor writing portions of a program while the class observes, and students writing portions of the program while their peers observe.
  • Individual programming. Lab sessions will be an opportunity for students to master the day’s discussion by completing a series of small programming assignments. This is a chance to get help from the instructor and discuss topics with peers.
  • Final project. A final project will force students to display a solid grasp of all concepts covered during the semester. Students are required to develop algorithms to solve a chosen problem, map those algorithms to computer code, and present the final outcome to a large audience.
  • Midterm Exam: TBA. Please note that there is no make up exam so you need to take the exam during the exam assigned time and date.
  • Final Exam TBA. Please note that there is no make up exam so you need to take the exam during the exam assigned time and date.

 

Course Materials:
Required course texts:

Recommended readings:

Other learning resources:

  • Students are required to possess a laptop, which should be brought to class daily.

 

Assignments and Grades:

  • 5 Assignments
  • Labs after each lecture
  • Final project: Group-based project
  • Exams: Midterm and Final

 

Grading:
The final grade will consist of the following:

Activity Percentage
Participation and Class Practice Labs

10%

Pop Quizzes

5%

Assignments

15%

Final Project

15%

Midterm Exam

25%

Final Exam

30%

 


Grade roster:

Score

Grade

95 – 100

A

90 – 94

A-

87 – 89

B+

83 – 86

B

80 – 82

B-

77 – 79

C+

73 – 76

C

70 – 72

C-

67 – 69

D+

63 – 66

D

< 63

FAIL


Grading Policy:

  • Ten percent points of the grade will be deducted per class an assignment is late (–1 sec = 1 minute = 1 hour = 1 day).
  • 20% for each day late and assignments will not be accepted past the 7th day after the due date without the instructor's permission.
  • You should save all of your programs and keep backups for the entire semester.
  • Programs should be tested and should run with syntax errors- programs with syntax errors will receive a zero on the assignment.
  • Programming style will be considered when grading the assignments: You are expected to use meaningful names for your variables and files and provide sufficient comments in the body of the programs.

Teaching Assistant(TA):

We have an excellent Teaching Assistants (TA), supporting this class during this semester (Helping with labs (during lab session) and Homework via email, and during office hours.

  • Section 3: Dena Ahmed <daa4ATnyu.edu>,will run the Labs for section 3 (Mon,Wed 2:40 - 3:55 PM)
  • Section 4: Muhammad Shujaat Mirza <shujaat.mirzaATnyu.edu> will run the recitations for section 4 (Mon,Wed 4:05 - 5:20 PM)

Course Schedule:

Week

Topic

Readings (Gaddis)

1

  • Course introduction
  • Why Computer Science?
  • High-level vs. low-level languages
  • Programming basics:
    • Syntax versus semantics
    • Programming errors
    • Data types
    • Operators
    • Variables
    • Memory allocation
  • Linux / Unix terminal basics
    • File structure and hierarchy
    • Working with files and folders
    • Searching and Piping
  • Chapter 1
  • Chapter 2
  • Appendix A
  • Appendix B

2

  • Input and Output
  • Strings and their methods
  • Sequences
    • Lists and their methods
    • Pointers and memory allocation
    • Multi-dimensional lists
  • Chapter 7
  • Chapter 8

 

3

  • Boolean logic and operators
  • Decision structures / Control statements
  • Repetitions
    • Condition-controlled loops
    • Count-controlled loops
  • Iterators
  • Nested for-loops with multi-dimensional lists
  • Chapter 3
  • Chapter 4

 

4

  • Strategies of problem solving
    • Decomposing complex problems
  • Functions
    • Fruitful and void functions
    • Arguments
    • Local vs. global variables
  • Modules / libraries
    • Python modules
    • Creating custom modules
  • Chapter 5

 

5

  • Hash tables
    • Dictionaries and their methods
  • File I/O
  • Exception handling
  • Comma separated value files
  • Chapter 9
  • Chapter 6

6

  • Scientific data analysis and graphs
    • Reading and analyzing data (CSV)
    • Plotting graphs
  • Lab on problem solving and file I/O
  • Chapter 5

7

  • Midterm Review and Exam

 

8

  • Classes and object-oriented programming (OOP)
    • Procedural and OOP
    • Classes
    • Working with instances
    • Techniques for designing classes
  • Memory allocation
    • Shallow and deep copying
  • Overloaded operators
  • How to think like a computer scientist

9

  • Advanced OOP
    • Inheritance and Polymorphism
    • Encapsulation
    • Composition
  • Version control system
    • Git
  • Lab on OOP

 

10

  • Graphical User Interface (GUI)
    • Processing
  • Game design
    • Basic structure
    • Input handlers
  • Sprites and animations

 

11

  • Game design
    • Collision detection
    • Parallax backgrounds
    • Sounds
    • Menus and preferences
  • Final project kick-off presentations

 

12

  • Recursions
  • Backtracking
  • Lab on problem solving with recursion and backtracking

 

13

  • Graphical User Interfaces
    • tkinter
  • Lab on tkinter
  • Special topics of CS

 

14

  • Special topics of CS
  • Final project discussions
  • Final exam review

 

Plagiarism and Cheating: [Zero tolerance]
NYU Abu Dhabi expects its students to adhere to the highest possible standards of scholarship and academic conduct.  Students should be aware that engaging in behaviors that violate the standards of academic integrity will be subject to review and may face the imposition of penalties in accordance with the procedures set out in the NYUAD policy.
Full details at: https://students.nyuad.nyu.edu/campus-life/student-policies/community-standards-policies/academic-integrity/ 


 

Homework Submissions:

Please submit assignments and labs through NYU Brightspace under assignments.

Please note that once you have submitted an assignment you can only resubmit it twice (within the due date), so make sure that what you are submitting is the final version of your assignment.

Make sure that any program you submit as part of the assignment is working (i.e. contains no syntax errors). Otherwise, you will not receive credit for the assignment.

 


Page last updated
@2022 Professor Sana Odeh