Introduction to Computer Science

CSCI-UA 101 009
9/7/2022 - 12/14/2022
4:55 PM - 6:10 PM

Mondays and Wednesdays 
Online Course via zoom

Zoom URL: https://nyu.zoom.us/j/98084793543



Professor Sana Odeh

Clinical Professor of Computer Science
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
Member of the NYU Paris Board

 

 


Email sana [AT] nyu.edu
Office

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

Help (via zoom)

Whenever you have a question about the course material, please feel free to e-meet 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.
Tutoring: We are fortunate to have excellent tutors (65 hours of tutoring per week) to help you with homework issues and questions related to class, So make sure to reach out to our course tutors as well (Tutoring will start by 9/13 via Zoom and in person and the schedule will be posted by then).



Class Time and Office Hour

 
Section #9

Class Time:  Mondays and Wednesdays, 4:55 PM - 6:10 PM Online
Office Hours: Mondays 6:20PM to 7:20PM via Zoom

Zoom: https://nyu.zoom.us/j/98084793543



Waitlist Questions

Please direct them to Romeo Kumar - kumar [at] cs.nyu.edu

 



Course Description:

In this course, we will study the foundation of computer Science ... one of the towering intellectual achievements of the 20th and 21 st centuries.
Computer Science is a relatively a new field that brought new innovations to all aspects of our lives– it revolutionized all fields from the arts, to medicine to the entertainment industry! The goal of this course is to introduce students to the field of computer science and also to teach students how to think like a computer scientist. Students learn how to design algorithms to solve problems, and translate these algorithms into working computer programs/applications using the Java programming language.

Students learn to apply principles from the fundamentals of computer science using algorithms, data structures, and the object-oriented programming (OPP) to solve problems.  You will learn how to decompose a large problem into modules and apply the concepts learned in class to solve programming assignments and final project.

This is the first course for computer science majors. Students are expected to already have some programming experience (see prerequisites below).

Class participation is important. Students should note that I generally ask all students to close their laptops and put away their phones at the start of class (i.e., no checking email or web surfing during class) to help promote participation and reduce multi-tasking, unless we are engaged in programming exercises. (See this article about student multitasking). I also expect students to come to class on time.

Catalog Description:

CS101 will teach students how to solve problems by designing algorithms and building them into standalone computer applications. Experience will be acquired through the completion of projects in a high-level programming language. This course is intended for computer science majors but is suitable for students of other scientific disciplines. 

 

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

  • Understand concepts of computer science and programming languages (Mainly Java).
  • Design algorithms to solve problems, and translate these algorithms into working computer programs/applications using the Java programming language.
  • Understand the procedural programming and object-oriented programming (OPP) both conceptually and practically, and be able to make critical arguments about their differences.
  • Use abstraction to think algorithmically and design and solve problems efficiently.

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

  • Class discussions: During each class, numerous questions will be posed by the professor to help students engage in the topics and to promote discussion. All lectures are interactive and require participations from students. Professor will be solving problems and programing live with students and might ask students to design simple programs during class as well.
  • Quizzes: There will be around 5 to 7 pop quizzes during the semesters to test students' preparedness on the readings and the material learned during class.
  • Individual programming Assignments: Students have to complete 5-7 individual programing assignments by the scheduled due dates.
  • Final project. A final project will allow students to display a solid grasp of all concepts covered during the semester including all OPP concepts. Students are required to develop algorithms to solve a chosen problem and submit a working application by the deadline.
  • Exams:
    • Midterm Exams: October 27th online. Please note that there is no makeup exam so you need to take the exam during the exam assigned time and date. You will not be able to use computers/mobile/digital watches or notes or books or use any other resource during the exam.
    • Final Exam TBA. Please note that there is no makeup exam so you need to take the exam during the exam assigned time and date.

 

Prerequisites:

  • Students must have either have taken CSCI.UA.0002 - Intro to Computer Programming, or passed a placement test.
  • No prior experience with Java is required, but students should be familiar with basic computer programming concepts such as:
    • Variables
    • Arithmetic, relational, and logical operators and expressions
    • Conditional Statements (if-then-else)
    • Looping (for, while)
    • Basic input and output
    • Functions

      Students who have taken the AP test for a high school course and received a 4 or 5 should take Data Structures / CSCI-UA.0102 instead of this course. If you didn't take the AP test but feel you know the material, you could take a placement test for 102. Please direct them to Romeo Kumar - kumar [at] cs.nyu.edu.

Waitlist Questions

    Please direct them to Romeo Kumar - kumar [at] cs.nyu.edu

Course Required Textbook

Introduction to Java Programming, Brief Version
10 or 11th edition
by Y. Daniel Liang
ISBN-13: 978-0134611037, ISBN-10: 9780134611037
You need to buy this book online via Amazon or any other online source, or from the NYU book store.
There are copies on reserve in Bobst that you can use in the library (you can use while in the library or scan 50 pages).

Optional TextBook Online:

Online textbook "Think Java, Second Edition"

Grades

Grades will be calculated using the following percentages:

  • Assignments: 25 % (7 to 10 assignment)
  • Final Groups Project (3 students per team): 15%.
    • There will be a groups' Project (3 people per team) where you can apply what you learn in class to solve a problem.
  • Quizzes: 10%
    • There will be weekly quizzes to encourage that you learn and review the material learned in a timely manner.
  • Midterm: 20%
  • Final: 30%

Exam Policy

There will be one mid-semester exam and a final exam. All exams are cumulative, although they will have larger emphasis on the new material covered since the previous exam. There will be no make-up exams. Failure to take an exam counts as a zero grade on that exam. The only exception to this rule is for students who have a legitimate medical or personal emergency (documented). These students need to talk to me as soon as possible (trying to excuse an exam absence a week after it happened will not work).

Grading Scale

Grades will be determined using the following scale:

A

95-100

A-

90- 94

B+

87- 89

B

83- 86

B-

80- 82

C+

77- 79

C

73- 76

C-

70- 72

D

65- 69

F

0-64


Grading Policy:

  • Homework must be submitted by the due date for full credit.
  • You will get one-week extension for free regardless of reason during the entire semester. Just email the grader about the extension before the due date and also email the grader the assignment by the following week. No need to email me about the extension.
  • 5% will be deducted for every day late. Late homework will not be accepted after 3 days from the due date.
  • You should save all of your programs and keep backups for the entire semester.
  • Programs should be tested and should run with NO syntax errors- programs with syntax errors will receive a zero on the assignment.
  • You should follow good programming style for all your assignments: You are expected to use meaningful names for your variables, and files names, sufficient comments in the body of the programs, and provide proper indentation.

 

Lab Tutors

We have 14 excellent tutors to support all sections of 101 course. Lab tutors will help with all programming issues and related questions.
There are 85 hours of tutoring per week ( Schedule will be posted in a few days)

Please make sure to reach out to the tutors for help as soon as you need it as they are excellent and happy to help you.

Tutoring:

Tutoring information (Online and in Person- follow information to signup):

  • Tutoring will start on Sept 13 and end December 14th. 
  • The schedule a tutoring in person appointment and view the tutoring schedule for online and in person tutoring please visit this link (you need this password "tutoring" to access this PDF file): https://cs.nyu.edu/~abari/Tutors.pdf 


Graders:

We have the following wonderful graders for this course. If you have an issue with your grade, please email the graders and copy me on the email asap.
Please note that graders do not help with homework so make sure to reach out to tutors for assistance with course material and homework

  • Section Grader:
    • Eunice Yeeun Kim <eyk5302ATnyu.edu>
    • Sihan Chen <sc7006ATnyu.edu>

Resources

Academic Integrity

All students should submit their own work. You should personally have written and entered every line in your code, unless a group project has been assigned. Students who cheat or plagiarize will be reported to the Dean. The department academic integrity policy is here.



Course Main Concepts:

Part 1: Fundamentals of Programming

  • Introduction to computer science and Java
  • Primitive data types and elementary programming, simple input/output
  • Control Structure (Conditional statements and Decisions)
  • Mathematical functions, characters, and strings
  • Repetition Structure (Loops)
  • Methods
  • Arrays (1D and 2D), operations on arrays

Part 2: Object oriented programming (OOP) and design

  • Objects and classes
  • Object oriented thinking and design

Part 3: Advanced concepts

  • OOP Inheritance and polymorphism
  • OOP Abstract classes and interfaces
  • Graphics and animations (using Processing)
  • Exception handling and file I/O
  • Recursion


Course Detailed Schedule (Tentative!):

Class

Topics

Reading Assignment

1

Class Introduction and Computer Science Foundation: Computer Science foundations, what's CS and what's an algorithm.

Chapter 1

2

Installing Java version 8: design, debug and run your first program from the command line (overview of Unix/Linux basic commands).

Elementary programming: variables, data types, mathematical expression, and basic input/output

Chapter 2

3

Control Structure: Conditional execution; logical operators; nested if-then-else statements; switch statement

Chapter 3

4

Repetition Structure: Loops (while and for loops), nested loops, inc/dec operators

Chapters 5

5

Strings, formatting output, random numbers

Chapter 4

6

Coercion and casting, characters, ASCII/Unicode; number systems

Appendix F

7

Methods part I and System Stack

Chapter 6, Appendix F

8

Methods part II: Parameters, and Method Overloading

Chapter 6, Appendix F

9

Arrays

Chapters 7

10

Searching and sorting: Selection sort; Linear and Binary Search;
Midterm Exam Review

You should have read Chapters 1-7 by now : )

11

Midterm exam


12

Two-dimensional arrays

Chapter 8

13


Intro to Object Oriented Programing (OOP) Part I
Java memory management

Chapter 9

14

Intro to Object Oriented Programing (OOP) Part II
Classes, objects, constructors

Chapter 10

15

Intro to Object Oriented Programing (OOP) Part III
Encapsulation, access modification; static; null


16

Intro to Object Oriented Programing (OOP) Part 4
Object-oriented Programming and Object-oriented Design


17

Intro to Object Oriented Programing (OOP) Part 5
this. and this(); static review


18

Intro to Object Oriented Programing (OOP) Part 6
Primitive wrappers; implementing a user-managed stack; intro to inheritance

Chapter 11

19

Intro to Object Oriented Programing (OOP) Part 7
Inheritance; intro to using Processing for graphics


20

Graphics using Processing

You should have read Chapters 8-11 by now : )

21

Graphics using Processing


22

OOP continues: Packages; polymorphism
 


23

OOP continues and  Arraylist


24

Exceptions; file I/O

Chapter 12

25

OOP continues: Immutability; abstract classes; interfaces

Chapter 13

26

OOP continues: Interfaces continued; comparable

Chapter 18

27

Recursion


28

Final Exam Review

Final Project Presentations



Reading Day



Final Exam


 

 

 

 


 


Page last updated
@2022 Professor Sana Odeh