Introduction to Computer Science

CSCI-UA.0101: Introduction to Computer Science
Spring 2013, New York University, Department of Computer Science
Section #03 – Monday / Wednesday, 03:30pm – 04:45pm, CIWW 102
Professor Craig Kapp, M.S., M.P.S.

Office Hours: Tuesday & Thursday, 11:00am – 12:30pm and by appointment
E-mail: craig [-dot-] kapp [-at-] nyu [-dot-] edu
Course Blog: http://cims.nyu.edu/~kapp/courses/cs101spring2014

Tutoring Schedule

We have several TAs that will have office hours on campus. Before seeing them, please review our tutor and student guidelines for what is expected. They will be at the 14 Washington Place lab and will be in the rooms farthest from the front door (down the stairs and all the way straight forward) according to the following schedule:



Prerequisite

CSCI-UA.0002 or departmental permission. Offered every fall and spring. 4 points.

This is a first course in computer science, using Java, an object oriented language. You do not need to have experience with Java, but some basic knowledge of some programming language is required, including the following topics:

  • Variables & Data Types
  • Arithmetic and Boolean operators and expressions
  • The assignment statement
  • The if–else statement, including nested if–else statements
  • The for loop, including nested for loops
  • The while loop
  • Basic input and output

Important note: If you are already an accomplished programmer who is familiar with Object Oriented programming techniques you are probably over-qualified for this course. There is a programming test that you can take to place out of this course (101) and move directly into Data Structures (102). There is no harm in failing this exam, so you are encouraged to take it if you feel you have a good grasp of fundamental programming techniques. The last thing we want you to do is waste your time and not be challenged by the class!

For more information regarding the placement exam for CS102 please see Mr. Romeo Kumar on the 3rd floor of WWH. You can also contact Dr. Marsha Berger, Director of Undergraduate Studies, at http://cs.nyu.edu/berger/ for more information.

Course Description

From the CS department website: ”Students learn how to design algorithms to solve problems and how to translate these algorithms into working computer programs. Experience is acquired through programming projects in a high level programming language. CSCI-UA.0101 is intended as a first course for computer science majors, and for students of other scientific disciplines. Programming assignments.”

Course Materials

Please note: As this is programming course, I will also provide on-line resources on all of the subjects that we cover.

Required Textbook:

Introduction to Java Programming, Brief Version, 9th edition
Note: You do not need the comprehensive edition
By Y. Daniel Liang
Published by Pierson, 2011
ISBN-10: 0-13-292373-4
ISBN-13: 978-0-13-292373-6

Topics

This is a tentative list of the topics we will cover:

  • Part 1: Fundamentals of Programming
    • Chapter 1, Introduction to Java
    • Chapter 2, Primitive Data Types (Elementary Programming)
    • Chapter 3, Selection Statements
    • Chapter 4, Loops
    • Chapter 5, Methods
    • Chapter 6, Single Dimensional Arrays
    • Chapter 7, Multi Dimensional Arrays
  • Part 2: Object Oriented Programming & Design
    • Chapter 8, Objects and Classes
    • Chapter 9, Strings
    • Chapter 10, Thinking in Objects
  • Part 3: Advanced Concepts
    • Chapter 11, Inheritance & Polymorphism
    • Graphics & Animation (Processing)
    • Chapter 15, Abstract Classes and Interfaces
    • Chapter 14, Exception Handling & Text I/O
    • Chapter 20, Recursion

Grading

There will be two midterm exams and one final exam. Your grade will be 20 percent for each midterm, 35 percent for the final and 25 percent for the homework. In addition, class participation will count towards your final grade. Grades will be determined using the following scale:

A94-100
A-90-94
B+87-90
B84-87
B-80-84
C+77-80
C74-80
C-70-74
D65-70
Fless than 65

Assignments

There will be twelve assignments in this course that will be assigned on a weekly basis. In general, assignments are due one week (7 days) after they are assigned at 11:55pm (just before midnight). For a full outline of assignment due dates please refer to the “Schedule” tab above. Each assignment will be scored out of 20 points.

It is important not to get behind in turning your assignments. Late submissions will be penalized by 10% off per day late (2 points), and assignments that are more than 1 week late (7 days) can not be turned in for credit.

You will be using NYU classes to turn in your homework assignments. It is your responsibility to make sure that your assignments have been submitted successfully. You can do this by simply attempting to download your work after it has been uploaded to the system – if you are able to do so, your assignment was submitted successfully. If you do have trouble with NYU classes you can always e-mail your homework to me directly.

With this said, your lowest assignment grade will be dropped and will not factor into your final grade.

Assignments that you turn in should be your own work. It is fine to talk to other students and to get assistance in how to do something, but you should not ask your fellow students to actually do the work for you. When you turn in an assignment, you are saying that you have done this work yourself. The definition of plagiarism is to present someone else’s work as though it were your own. Please read the Computer Science Department statement on academic integrity for more information.

Software

We will be working with two software packages this semester – the Java Programming language, which is available for download as the Java Development Kit (JDK), and the Eclipse Integrated Development Environment (IDE) for writing our programs. Full directions on how to get started with both of these packages can be found in the writeup for Assignment #01 – Hello, World.

In addition, Macintosh and PC computers with the JDK pre-installed will be made available to you in the ITS labs. Theoretically, you do not need your own computer to complete the required coursework for this class.

We will also be using the Java-based Processing graphics framework during the second half of the class. Processing is an open-source project that is available for download at http://www.processing.org

Saving your work in the lab

You will be able to save your work ITS labs under your NYU Home Account and/or on your own flash drives. Although you can write to the hard disks of the machines in the labs, you cannot be sure that you will have access to the same machine the next time you enter the lab and the drives in the lab are frequently erased. The best option is to upload your files online and download them as needed (we will go over this in class).

Home Computers

Many students will have access to home computers or computers at work. It is fine to do your assignments on whatever resources you have available, as long as your software is current. You are not required to do your assignments in the NYU labs. You may find it advantageous to visit the labs however since there will be a tutor available 20 hours per week, and other students can sometimes assist you with general features of the programs.

Using the NYU Computing Facilities

NYU maintains a number of computer labs that can be used to complete assignments for this class. In addition, tutoring sessions will be held in the computer labs (see the section on tutoring above). Further information on NYU labs is available on the ITS homepage.