Sana Odeh > Web Development and Programming


Web Development and Programming

Professor Sana Odeh
Clinical Professor of Computer Science
Faculty Liaison for Global Programs of Computer Science
Computer Science Department
Courant Institute of Mathematical Sciences
New York University

Email sana [AT]
Office 251 Mercer Street, Room 321, Courant Institute, NYU NY, 251 Mercer street, New York City
Help Whenever you have a question about the course material, please feel free to see me during my office hours 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 hours

Section One
Class Time Mon/Wed, 3:30 PM – 4:45 PM
Room 101 CIWW (Courant)
Office Hours Mon, 5:00-6:00 PM
Room 321 (Courant)
Other times by appointment
Section Two
Class Time Tue/Thu, 3:30 PM – 4:45 PM
Room 512 CIWW (Courant)
Office Hours Tue, 5:00-6:00 PM
Room 321 (Courant)
Other times by appointment

Course description

This course provides concrete knowledge in client and server-side web programming. Students design, and build interactive, secure and powerful web applications. Students learn and use key technologies such as HTML5, CSS3, JavaScript, jQuery, AJAX, JSON, Web APIs, and PHP.


Non-majors: Web Design and Computer Principles ( CSCI-UA.0004) or equivalent, and Introduction to Computer Programming (CSCI-UA.0002) or one semester of programming in Java, Python or an equivalent programming experience such as in C.

This is an intensive programming course: You will need to write and debug programs the entire course!

Topics covered

  • Quick review of the foundations of the Internet and the Web
  • Client-side programming
    • Quick review of HTML
    • Quick review of CSS
    • JavaScript
      • Foundation
      • Data types
      • Making decisions
      • Iteration structure (Loops)
      • Arrays
      • Objects (String, Arrays, Date, and Math)
      • Functions
      • The Document Object Model (DOM): Methods, Properties, and Events
      • Cookies
      • JavaScript Libraries
        • jQuery
        • Ajax and JSON
        • Other Web APIs will be discussed if time permits
  • Server-Side Programming
    • PHP
      • Syntax (Variables, Data Types, loops, and arrays)
      • functions
      • Built-in functions
      • How to collect and process data from forms (web programming)
      • File (I/O): reading and writing to file


Exams (60% of final grade)

There will be one in-class midterm exam (25%) and one final exam (35%). Both exams are hand-written exams, where neither books nor computers are permitted. There will be no makeup exams, so make sure to make the midterm and final on these dates! Do not book any travel on these dates!

Midterm exam dates: October 25 (Section One) and October 26 (Section Two).

Homework assignments (40% of final grade)

The homework assignments are required and will consist mainly of programming assignments. The details will be posted later. There will be 5-7 assignments or projects.


  • Ten percentage points of the grade will be deducted per class an assignment is late, with a possible maximum deduction of 30%. Assignments will not be accepted past the third class after their due date without the instructor’s permission.
  • You should save all of your programs and keep backups for the entire semester.
  • Programming style will be considered when grading the assignments: You are expected to use meaningful names for your variables and files and provide sufficient comments in the body of the programs.
  • Throughout the semester, you may submit one homework up to one week late without penalty. In that case, please be sure to advise the instructor before the due date that you will be using your “freebie extension”.

Academic integrity

Make sure that you read the Computer Science Department’s Statement on Academic Integrity. We take cheating very seriously!

  • Discussing homework concepts is fine, but you must submit your own work.
  • Copying all or part of another student’s homework, project or exam is considered cheating.
  • Allowing another student to copy all or part of your homework, project, or exam is also considered cheating.

Please note that if you are caught cheating, you will receive a failing grade for the course.

Web server account

If you do not already have one, you will be assigned a Unix Web server account at the start of the semester. This is called an “i6 account” and we will use it to host our websites. All class work should be posted here.

For questions about i6 accounts, see this FAQ page. If you forget your i6 password, go to this page for instructions on how to reset your password ASAP.

Class graders

Section One: Grace Wagner (

Section Two: Xuebo Lai (


Please contact our excellent tutors if you require help in person or via email:

Tutoring hours are held at 539-541 LaGuardia Place ITS Lab (Tel. 212-998-3421)

Mark Barash (

  • Tuesdays: 6 pm – 9 pm
  • Wednesday: 6:00pm – 9:00pm
  • Thursdays: 12:30 – 4:30pm

Terence Chen (

  • Monday: 12 pm – 3pm
  • Thursdays: 5:00pm – 9:00pm
  • Fridays: 2:00 – 5:00pm

Submiting assignments through NYU Classes

  1. Log in to NYU Classes with your NYU NetID and password.
  2. Click on the tab for the appropriate class (if there is more than one).
  3. Click on Assignments in the navigation bar on the left.
  4. Click on the link for the corresponding assignment in the main window.
  5. Answer the assignment in the “Assignment Text” box and/or attach files by clicking on the Choose File button under “Attachments”
  6. When you are ready, confirm that your text and any attachments appear and click the Submit button. Wait for confirmation before closing the browser window.

Please note that once you have submitted an assignment you can only resubmit it twice (within the due date), so make sure that what you are submitting is the final version of your assignment.

Make sure that any program you submit as part of the assignment is working (i.e. contains no syntax errors). Otherwise, you will not receive credit for the assignment.