Introduction to Computer Science Syllabus

 

Course Title:                        Introduction to Computer Science

Professor's Name(s):            Sana Odeh

Duration:                               14 Weeks

Lab:                                        This course has a laboratory component.

Course Number:                   CS-AD 101

Professor's email:                odeh@courant.nyu.edu

Class Time: Monday/Wednesday 2:35 - 4:45 pm, room N-202, NYU Abu Dhabi Downtown Campus.
                          Lecture:
75 minutes. Lab: 55 minutes.

Office Hours:  Monday 4:50-5:50pm or at other times by appointment.

Office Location:                    S-106 NYUAD Downtown Campus.

Pre-requisite:                        None

 

Website for the course:        http://cs.nyu.edu/~odeh/cs1fall2011/

 

Brief Course Description:

This course introduces students to the foundations of computer science. Students learn how to design algorithms to solve problems and how to translate these algorithms into working computer programs using a high-level programming language. The course covers core concepts including: basic computation; data structure; control structure; iterative structures; file I/O and exception handling; recursion and functions. Students also learn the elements of Object Oriented Programming (OOP), such as objects, classes, inheritance, abstraction, polymorphism, and Interface. Students produce programs focusing on scientific concepts, graphics, games and web CGI implementation, and in a final project, they develop a fully functioning, interactive, fun game that employs a clean design, intuitive graphical user interface (GUI), simple to moderate strategy, and event-handling techniques.

 

 

 

Course Learning outcomes: 

 

Teaching and Learning Methodology

This course has two weekly lectures of 75 minutes followed by a lab session of 55 minutes. Lectures will be interactive, engaging students in the topic being discussed and encouraging students to ask and answer questions.  During lab sessions, students will solve programming assignments, enforcing the concepts learned during the lecture and allowing for one-on-one interaction with students, to ensure students have understood and are able to apply the key concepts learned during lecture. There will be one midterm exam (DATE TBD), one cumulative final exam (DATE TBD), several assignments and one final group project (Due on DATE). Assignments MUST be submitted with no syntax errors to be accepted. After homework is graded, a meeting with each student would be setup to go over his or her programming assignment illustrating how it can be improved.

 

 

Assignments and Exams:

 

Assignments: Students will produce 5 assignments implementing structural and object-oriented programming (OOP) features, graphics, games and web CGI.

 

Final Project: Students are required to develop a fully functioning, interactive, fun game that employs a clean design, intuitive graphical user interface (GUI), simple to moderate strategy, and event-handling techniques needed for interactive games.

 

 

Grading Policy:

Help: Whenever you have a question about the course material, please feel free to see me during my office hours 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.

 

Late Assignment Policy:

Extension: During the course of the semester, every student in this class is permitted one extension of one week - no questions asked! but you need to email me about extension before the assignment due date. Assignments with extensions (late assignments) should be submitted within one week from the assignment's due date.
However, please do not hesitate to see me if you are falling behind, if you would like assistance, or there are circumstances beyond your control which delay your work.

Late assignments (without extension) will be penalized as follow:

 

Plagiarism policy:

https://nyuad.nyu.edu/students/campus.life/policies/policy.academic.integrity.html

 

 

Student Conduct Policy: In an effort to make this class enjoyable for everyone, I would like you to be guided by the following policies:

 

 

Required books:

1.     Starting Out with Python (2nd Edition) (Gaddis Series)
 Publisher: Addison Wesley; [Paperback]

SBN-10: 9780132576376

ISBN-13: 978-0132576376

 

2.     Fundamentals Of Python: From First Programs Through Data Structures

by Kenneth A. Lambert, Martin Osborne
Course Technology, Paperback - 01-2009, ISBN 1423902181

3.     Python Programming: An Introduction to Computer Science by John Zelle

Franklin Beedle & Associates, 2nd edition

 

4.     Beginning Game Development with Python and Pygame From Novice to Professional

by Will McGugan

5.     Game Programming: The L Line, The Express Line to Learning by Andy Harris

 

Optional books:

1.     Making Games with Python & Pygame [Paperback] by Al Sweigart

2.     Python for Software Design: How to Think Like a Computer Scientist by Allen B. Downey. ISBN-13: 9780521725965

Cambridge University Press
Second edition (March 2009)

 

 

 

Software: We will use Python software (Version 2.7.6) in this class. This is a free and open source software. The Python software includes the Integrated Development Kit (IDE) called IDLE. IDLE is easy-to-use and is available for different operating systems such as windows, Linux and MAC OS.


Course Web Accounts:
We will be using a special web account on a Unix web server, which will be assigned to you automatically based upon your enrollment.  This is called an 'i5' account, and we will use it for our web sites. I will discuss the details of this account later on in the course when we cover web CGI.

 

Online Useful Resources:

Free online access to required textbook 'How to Think Like a Computer Scientist': http://www.greenteapress.com/thinkpython/thinkCSpy/html/

 

Safari Online (Access ebooks online for free- ONLY FOR NYU students)

 

 


 

 

Course Topics: Detailed topics, assignments and readings for each week.

Please note that this is a tentative schedule and topics may change!

 

Week

Main topics

Readings

1

Class Introduction:
What is computer Science? What is an algorithm?

How to install, run and use Python's software needed for this class.

Introduction to Programming in Python.

Foundation of Programming:
Variables, data types, statements and expressions.

 

Chapters 1 from Gaddis's Book

Chapter 1 from Lambert's Book.

Chapter 1 & 2 from Allen Downey's Book.

 

2

Control flow: Branching and repetition:
Boolean logical operators and expressions.
Selections statements (If, elif, and else.)

Repetition (Iteration using loops.)

 

Introduction to Pythons Modules and Functions: Math, and Random.

 

Chapters 2,3,4,5 from Gaddis's Book

Chapters 2, 5.1-5.7 and 7 from Allen Downey's Book.

Chapters 2 (2.1-2.5) 3 (pages: 46 to 50) from Lambert's Book.

 

3

Modular Programming:  Structuring larger programs.

Designing Modules and Functions.

 

Chapters 6 from Gaddis's Book

Chapters 3 and 6 from Allen Downey's Book.

Chapters 2.6 and 6 from Lambert's Book.

 

5

Introduction to Data Structure:  Lists, Tuple, and Dictionaries.
File I/O and Exceptions

Chapters 7 & 10 from Gaddis's Book

Chapters 11, 13, and 15 from Allen Downey's Book.

Chapters 5 (5.4-5.5) and 8 from Lambert's Book.

 

6

Sorting and Searching

Recursion

Chapters 11 from Lambert's Book.

Chapters 13 from Gaddis's Book

Chapters 5.8-5.14 from Allen Downey's Book.

Chapters 9 from Lambert's Book.

 

7

Web Programming in Python (CGI): Using Python programs on the web

Will provide my own lectures and examples

 

8

Review and Midterm Exam in Class (hand-written exam: no books, and no computers)

9

Object-Oriented Programming (OOP): Part II: Classes and Objects: Abstraction and Encapsulation.
Turtle Graphics modules.

Chapters 12 from Gaddis's Book

Chapters 4, 15, 16, and 17 from Allen Downey's Book.

Chapters 7, 8 and 12 from Lambert's Book.

 

10

Object-Oriented Programming (OOP): Part III: Inheritance, Polymorphism and Interface

Chapters 18 from Allen Downey's Book.

 

11

Building Graphical Applications (GUI): Part I

Chapters 14 from Gaddis's Book

Chapters 9 from Lambert's Book.

 

12

Building Graphical Applications (GUI): Part II Assign Assignment #5 (Graphics: Implement a simple game). Due in two weeks.

 

Assign group project: Project should include all material learned in the course including Search, Sort, recursion, functions, Database, and of the all OOP and GUI concepts used in this course. Due during last class.

13

Building Graphical Applications (GUI): Part III           

 

14

Review and Group Projects Presentations            Group project is due.

 

 

Final Exam Dates: Final Exam Date will be posted later.