CS 101 – Fall ’23

CSCI-UA.101 Introduction to Computer Science 

2023 Fall Syllabus and Schedule

Course Number: CSCI-UA.0101

Course Title: Introduction to Computer Science

Section: 010

Course Type: In-person

Semester: Fall 2023

Course Description

This course will teach students 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.

In this class you will be introduced to the field of computer science. Specifically, you will learn how to design and write computer programs in the Java programming language. You will learn the object-oriented paradigm (OOP) and how to model and solve problems using OOP.

You will learn how to apply principles from the fundamentals of computer science using algorithms, data structures, the theory of computing, and the object-oriented paradigm to solve real world problems. You will learn how to decompose a large problem into modules and apply the concepts learned in class to solve programming assignments.

You will convey technical knowledge in a clear and concise manner by presenting your work in class to develop skills in oral and written communication.

Using the basics of the Object-Oriented Paradigm you will learn how it can be used to model a real-life project such as a Point of Sale application, a calculator or phone book application. You will be exposed to solving software problems using application programming interfaces (API) in Java. You will also be exposed to the fundamentals of processing in Java.

Pre-requisites: CSCI.UA.002

Students with extensive programming experience would need to take a test-out exam to take CSCI.UA.0102 Familiarity with basic concepts of programming in some programming language is required (variables, expressions, assignment statements, control statements and basic input output).

Office Hours (starting on September 12, 2023):

            Tuesday (12.30pm-1.30pm) in-person

            Thursday (2pm-2.30) online (check announcements for details)

You are highly encouraged to visit the instructor during office hours without notice. Prepare for office hours by coming up with focused and targeted questions. In case there is a line of students waiting, the instructor will limit the meeting to a maximum of 5 minutes per student. You are also encouraged to meet with tutors. The schedule of the tutors will be uploaded on Brightspace and I will be sending emails about the schedule, separately.

Textbook: Introduction to Java Programming, Brief Version by D. Liang; 11th Ed. ISBN-10: 0-13-359220-0, ISBN-13: 978-0-13-359220-7

Topics

The course consists of two main parts: Please make sure that you follow the book’s chapters according to the chapters we covered class. It is your responsibility to keep up with the readings depending on the chapter we are covering in class. For instance, if we are covering object-oriented programming, you will need to search in the book for the corresponding chapter and read it.

 

Part 1: Fundamentals of Java Programming

  • Introduction to computer Science, computer programming and Java
  • Introduction to Integrated Development Environment: Eclipse
  • Primitive data types and expression in Java
  • Conditional Statements
  • Iterative Statements
  • Methods
  • Arrays and Two-dimensional arrays

Part 2: Object Oriented Programming and Design

  • Introduction to the object oriented programming paradigm: Objects and Classes
  • Advanced Object Oriented Programming Features
  • Inheritance and Polymorphism
  • Abstract Classes and Interfaces

And more:

  • Exception Handling and Text I/O
  • ArrayLists in Java
  • Graphics and Animations (using Processing)
  • Recursion (if time permits)
  • Introduction to sorting algorithms (if time permits)

Assignments

The assignments will be sent out via the Brightspace.

HW Submission: You will be asked to send your assignments via Brightspace. While you send your files (source codes, zip files, etc.), please use appropriate file names. For every 24 hours that an assignment is late, we will apply a 10% penalty on the grade, up to a maximum penalty of 30%. After 72 hours, we will no longer accept the assignment.

Tutoring: Tutoring is available but the schedule is TBD and will be shared with you once available.

Grading: Please note that this grading policy is subject to change at any time without notice. If a change occurs, a new version will be uploaded on NYU Brightspace.

Final grades for the course will be determined using the following weights:

  • 30% Programming assignments
  • 20% First Midterm Exam
  • 20% Second Midterm Exam
  • 24% Final Exam
  • 6% Quizzes 

There will be no make-up exam unless you have a valid excuse. In that case the instructor might offer other options.

The following scale will be followed when assigning the final grade:
The scale is subject to change accordingly by the instructor at any time during the semester.

 

    A         >=95

    A-       90-94

    B+      87-89

    B         84-86

    B-        80-83

    C+      76-79

    C         72-75

    C-       70-71

    D+      67-69

    D        65-66

    F         below 65

Students’ Requirements

Basic requirements for an effective computer science class include reading chapters prior to the lecture. You should be proactive and look for the corresponding chapters of the topics we are covering in class.

You will need to attend every class. You will be asked randomly to answer questions and solve problems on your computer where you will demonstrate your solution to the whole class. You will be required to complete the in-class practice and spend a substantial amount of time in doing your homework and the programming assignments.

Please note that this syllabus and schedule is subject to change at any time. If a change occurs, a new version will be uploaded on NYU Brightspace.

 

Date Class Materials Covered
09/05 #1 basic computer concepts
09/07 #2 command line, text editors, getting familiar with Java data types, primitives, variables, constants, operators
09/12 #3 increment and decrement operators, expressions, I/O
09/14 #4 booleans, conditionals, Math.random, mathematical functions
09/19 #5 loops
09/21 #6 char and string
09/26 #7 methods
09/28 #8 methods
10/03 #9 Arrays
10/05 #10 review
10/10   LEGISLATIVE DAY – MONDAY SCHEDULE-NO CLASS
10/12 #11 Midterm I
10/17 #12 Arrays
10/19 #13 Classes, objects
10/24 #14 Classes, objects
10/26 #15 Object Oriented Thinking
10/31 #16 Inheritance
11/02 #17 Polymorphism
11/07 #18 Equals, ArrayList – Abstract classes, Interfaces
11/09 #19 Equals, ArrayList – Abstract classes, Interfaces
11/14 #20 Midterm II
11/16 #21 Midterm discussion and Exceptions
11/21 #22 Exceptions
11/23   THANKSGIVING RECESS – NO CLASS
11/28 #23 File I/O
11/30 #24 File I/O
12/05 #25 Processing
12/07 #26 Processing
12/12 #27 OOP, Exceptions, File I/O Q&A Session
12/14 #28 Programming and AI Ethics and Review