Internet Programming
(updated 4/25/17)

Valid XHTML 1.0 Strict

CSE 336 News

Hot Links

Course Information

Semester: Spring 2016
Time: Monday and Wednesday, 5:30PM - 6:50PM
Location: Javits 101
  1. Java Servlets and JSP, 3rd Edition, Joel Murach and Michael Urban, Mike Murach & Associates, Inc., ISBN#978-1-890774-78-3.
  2. (optional) Head First HTML5 Programming, Eric Freeman and Elisabeth Robson, O'Reilly Press, ISBN#978-1449390549
On-line texts (Safari)
  1. Head First Servlets and JSP, 2nd Edition, Basham, Sierra, and Bates
  2. JavaScript, The Definitive Guide David Flanagan

Contact Information

Instructor: Dr. Robert Kelly
E-mail: robkelly@cs.stonybrook.edu
(be sure to include "CSE336" with no spaces, in the subject line of any e-mail message you send to me)
Office hours: Mondays, 10:00AM-11:30AM
Fridays, 10:30AM-12:00Noon
Office location: New Computer Science 218


CSE 336 will provide students with an introduction to the technology of the Internet, especially approaches to programming cloud-based systems. While the business and tools of the Internet-are still evolving, the underlying technology has become fairly well established. This technology takes the form of various standards, architectural approaches, interfaces, and programming APIs. The programming APIs are particularly relevant in that they provide an abstraction of the underlying technology. CSE 336 uses the programming APIs (primarily Java) to present the technology of the Internet. The course presents the concepts needed to build enterprise-wide solutions, particularly the server-side components of those solutions. Students are expected to complete many programming assignments that develop components of E-Commerce solutions.

Successful completion of CSE 219 is required to enroll in this course.

Course Objectives

The principal outcomes of the course are:

  1. An understanding of the issues in software architecture design for Internet Commerce applications
  2. An ability to implement Internet applications using industry standard technologies such as HTML page templates (i.e., JSPs) and related objects (i.e., servlets and Java Beans)
  3. An understanding of aspects of XML useful in the development of Web Services applications

Development Tools

You should use an Interactive Development Environment (IDE) to complete the programming assignments. The official IDE for the class is NetBeans. However, you can use any Java IDE supporting Java SDK 8.0 and servlet/JSP development and testing (JSP 2.1).


NetBeans is available as a download from the NetBeans site; use the standard 8.0 version. If you have not already installed the Java 8.0 SDK, it also might be easier to download and install the Java SDK with NetBeans at the Oracle site.

Another Java IDEs that you might use is Eclipse.

We will not cover the use of any Java IDE in class. However, all the information you need to use it successfully is provided at the download site. In addition, the TAs will help you with NetBeans during TA sessions.


For HTML development, Amaya is a very capable HTML tool supporting your HTML and CSS development, and is available for a free download. Dreamweaver is the industry standard tool, but it is not available with a free unlimited license. However, if you already have access to it, it should be fine for this course.

Lectures and Assignments

We will be following the syllabus closely. The assigned reading for the class contained in the textbook and in documents (articles, standards, etc.) available on the Internet are included in the class notes and in a page on the class Web site. A sizable portion of the reading will include JavaScript, servlets, and JavaServer Pages.

Click on the lecture topic below to download a PDF file containing the class notes.

Date Topics Textbook Assignment
1/23 (M) Introduction   Due 2/5
1/25 Background    
1/30 (M) Project discussion and HTML Chapter 4 Due 2/7
2/1 CSS Style Sheets    
2/6 (M) JavaScript (Part 1)    
2/8 No class    
2/13 (M) JavaScript (continued)
Due 2/24
2/15 JavaScript/DOM   Due 2/24
2/20 (M) Servlets Chapters 1-2, and 5  
2/22 Http    
2/27 (M) Quiz and Form Datasets    
3/1 Ajax   Due 3/6
3/6 (M) Java Beans Chapter 6, pages 173-175  
3/8 Mid-term exam    
3/13 (M) Spring Break    
3/15 Spring Break    
3/20 (M) Mid-term results review, Java Beans (continued)    
3/22 JSP Intro Chapter 7  
3/27 (M)
Data Sharing/Sessions, EL (Expression Language) Chapter 8  
3/29 (W) EL (continued), JSP/Servlet Interaction   Due 4/4
4/3 (M) JSTL   Due 4/16
4/5 Quiz and JSP Tags Chapter 10 Due 4/20
4/10 (M) JSP Tags (continued) and XPath    
4/12 jQuery    
4/17 (M) jQuery (continued)    
4/19 jQuery/Ajax   Due 4/30
4/24 (M) Custom Tag Review, Serialization/JSON    
4/26 Quiz and Spring Framework    
5/1 (M) Angular JS    
5/3 Quiz and Review    
Javits 101
Final Exam (8:30PM-11:00PM)
(exam will be 45 minutes, starting around 8:45PM)

Assignment Information

Hands on use of the Internet through the Java APIs, along with various development frameworks is critical to your success in this class. Every week there will be assigned reading and for most weeks there will be programming assignments. Don't fall behind in this work. It will be difficult to catch up with the class.

There will be one programming project for the class, but it will be broken into smaller programming assignments. You will develop your project incrementally, with each part assigned as the associated topic is covered in class. You should plan on spending between three and seven hours per week on the assignments. We will also use alternate development approaches to develop the same project.

On-time submission of the assignments will count as the assignment portion of your grade. The material in the programming assignments constitute a large component of the mid-term and final exams.

You will submit the programming assignments electronically to the TAs, beginning with Assignment # 2. Just send the Java files (not the class files). Also, the sooner you submit the assignment, the sooner it will be returned to you. The assignments are due at Midnight on the due date listed in the class Web site. However, TAs will not begin grading until at least the next morning, so if you submit it a few hours after midnight it will also be accepted.

You may work on the assignments either individually or as part of a small group (maximum of 4 students in a group). If you do work in a group, remember that you have a responsibility to understand all aspects of the assignment.

When you submit an assignment, please include the following in the body of the e-mail.

If a group works on an assignment, you only need to submit one e-mail.

Grades and Exams

This is a three credit graded course. Your final grade is based primarily on your exam and quiz scores (mid-term and final exams, along with 2-4 quizzes). Assignments will be graded on a range of 0-10, and the total of all the assignments will constitute your assignment grade. That grade will be normalized so the final grade in this category will be in the range 0-100. The approximate weighting of the midterm exam, the final exam, the quizzes and the HW is 40/30/15/15.

Extra points may be added to your exam scores for correct answers to certain in-class questions during regular class meetings. We will also have in-class hands-on programming exercises. You can work on these exercises in a small group (sharing a computer), and the first group to complete the exercise will receive extra credit in the subsequent exam. In addition, there may be some extra credit assignments, and credit for these assignments (if any) will be added to your exam scores.

All the exams will be closed book, however relevant class libraries and APIs will be provided to you. The exams will be composed of some short answer questions and some programming questions. For the programming questions, your understanding of the concepts will be more important than your knowledge of the exact syntax.

Be sure to bring your student ID to all exams. The TAs will check your ID, and no one will be allowed to take an exam without the proper ID. Any incidents of cheating will be reported to the University committee on academic honesty.

Be sure to be in class on-time for you assigned examination time since there will be no make-up exams.

The Pass/No Credit (P/NC) option is not available for this course.

Labs and TAs


Sergey Madaminov


Shikhar Sharma

Siddharth Shah

Siddharth Shah

Siddharth Shah

Sarang Pande

The class is a hands on programming class, so you will require access to a computer and a Java development environment. The NetBeans development environment is computers in the Computer Science Labs.

If you need to quickly set up account, please contact the CS Department system staff. You will need to provide the CS Systems staff with your student ID and an e-mail address. An e-mail will be sent to you when the account is ready.

The class TAs are available to help you in understanding the material in many ways. They will provide hints and suggestions when they respond to your submission of a homework assignment. They may also be available in teaching sessions given in the Computer Science Teaching Lab. Click the link in the TA names below to pop up a mail window.

The TAs will be coordinating hints and instructions concerning the HW assignment through Piazza. Piazza is a Q&A platform designed to get you answers from classmates and instructors. It serves as a forum to allow you to collaborate and solve common challenges. You can post any doubts you have or errors you may encounter, and we will post our answers on Piazza directly. You are also encouraged to answer any questions posted by your classmates.  This way when an issue is resolved, everyone gets to benefit and learn from the answer.

We also be posting assignment-specific instructions or notices on Piazza, so make sure you sign up. We would also like to remind you that Piazza is for sharing errors or doubts you encounter. For the sake of academic integrity, you should avoid posting your actual code in the discussion forums. If you feel it is absolutely necessary, you can check either with the instructor or one of the TAs.

Academic Integrity & Behavior

As a student at Stony Brook, you have agreed to follow the university's rules regarding academic integrity and appropriate conduct. You should read both the academic integrity information and procedures and the student code of conduct.

Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Any suspected instance of academic dishonesty will be reported to the Academic Judiciary.

Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn.  

Special Assistance

If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Disability Support Services office, 128 ECC Building (631) 632-6748. They will review your concerns and determine, with you, what accommodations are necessary and appropriate. All information and documentation of disability is confidential.

Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and Disability Support Services. For procedures and information go to the Environmental Health and Safety web site, and search Fire Safety and Evacuation and Disabilities.

If you need general computer help, you can use the Computer Science Help Desk. Services offered include setting up an account on a department server, using Windows NT, using a browser, and connecting to the campus network. The Help Desk office is located in the SBCS Office - Room 2110.


The following list will contain links and references that will be useful in the course. To access some of the documentation, you have to register for the Oracle Java Developer Connection and the IBM DeveloperWorks.