CSCI-UA.101 Introduction to Computer Science
2024 Fall Syllabus and Schedule
Course Number: CSCI-UA.0101
Course Title: Introduction to Computer Science
Section: 005
Course Type: In-person
Semester: Fall 2024
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: TBA
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 TBA 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/03 | #1 | basic computer concepts |
09/05 | #2 | command line, text editors, getting familiar with Java data types, primitives, variables, constants, operators |
09/10 | #3 | increment and decrement operators, expressions, I/O |
09/12 | #4 | booleans, conditionals, Math.random, mathematical functions |
09/17 | #5 | loops |
09/19 | #6 | char and string |
09/24 | #7 | methods |
09/26 | #8 | methods |
10/01 | #9 | Arrays |
10/03 | #10 | Arrays |
10/08 | #11 | review |
10/10 | #12 | Midterm I |
10/15 | LEGISLATIVE DAY – MONDAY SCHEDULE-NO CLASS | |
10/17 | #13 | Classes, objects |
10/22 | #14 | Classes, objects |
10/24 | #15 | Object Oriented Thinking |
10/29 | #16 | Inheritance |
10/31 | #17 | Polymorphism |
11/05 | #18 | Equals, ArrayList – Abstract classes, Interfaces |
11/07 | #19 | Equals, ArrayList – Abstract classes, Interfaces |
11/12 | #20 | Exceptions |
11/14 | #21 | Exceptions and review |
11/19 | #22 | File I/O |
11/21 | #23 | File I/O and review |
11/26 | #24 | Midterm II |
11/28 | THANKSGIVING RECESS – NO CLASS | |
12/03 | #25 | Processing |
12/05 | #26 | Processing |
12/10 | #27 | OOP, Exceptions, File I/O Q&A Session |
12/12 | #28 | Programming and AI Ethics and Review |