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
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
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. |
Class Time and Office Hour
Section #9 | Class Time: Mondays and Wednesdays, 4:55 PM - 6:10 PM Online |
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
- Class Required textbook online resources for students Version 10: http://wps.pearsoned.com/ecs_liang_ijp_10/
- Class Optional ONLINE textbook "How to think like a computer scientist"
- To download Eclipse (needed for the 2nd part of this course): https://eclipse.org/downloads/eclipse-packages/
- To learn how to use Eclipse: http://www.cs.armstrong.edu/liang/intro9e/VideoNote/Eclipse/EclipseTutorial.htm and http://s/eclipse/
- Check the NYU library guide for computer science for research and online free books and video:
- NYU Computer Science Guide
- Online free ebooks and videos about Java and other CS topics (Safari online books and video). Please note that this available only through NYU VPN access.
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; |
You should have read Chapters 1-7 by now : ) |
11 |
Midterm exam |
|
12 |
Two-dimensional arrays |
Chapter 8 |
13 |
|
Chapter 9 |
14 |
Intro to Object Oriented Programing (OOP) Part II |
Chapter 10 |
15 |
Intro to Object Oriented Programing (OOP) Part III |
|
16 |
Intro to Object Oriented Programing (OOP) Part 4 |
|
17 |
Intro to Object Oriented Programing (OOP) Part 5 |
|
18 |
Intro to Object Oriented Programing (OOP) Part 6 |
Chapter 11 |
19 |
Intro to Object Oriented Programing (OOP) Part 7 |
|
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 |