Internet Programming
(updated 12/23/18)

CSE 336 News


Course Information

Semester: Fall 2018
Time: Monday and Wednesday, 5:30PM - 6:50PM
Location: NCS120 - Since the NCS room has an excellent AV system, we will use this room for most of our sessions. When announced, other sessions will use Light Engineering 102. When the NCS room is used, remember that food and drinks are not permitted.
Text: Assigned on-line readings are provided in lecture notes.

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: Tuesdays, 11:00AM-12:30PM
Wednesdays, 2:30PM-4:00PM
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. 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 cloud 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 IntelliJ IDEA. However, you can use any Java IDE supporting Java SDK 8.0 and Java EE 8.0.

Java Development

IntelliJ is available as a download from the IntelliJ site.

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 IntelliJ during optional TA sessions. You may find it useful to review a slide set describing the use of IntelliJ for RESTful Services.


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 for individual class sessions. A sizable portion of the reading will include JavaScript, Java EE, and one or two client and server scripting approaches.

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

Date Topics Assignment
8/27 (M) Introduction Due 9/9
8/29 Background  
9/3 (M) No class - Labor Day Holiday  
9/5 Project discussion and HTML  
9/10 (M) No class  
9/12 CSS Style Sheets Due 9/24
9/17 (M) Page Generation, JavaScript  
9/19 JavaScript/DOM Due 9/30
9/24 (M) Http, Servlets  
9/26 Form Datasets  
10/1 (M) Quiz Preparation, Ajax Due 10/9
10/3 Quiz and Restful Services  
10/8 (M) No class - Fall break  
10/10 Restful Web Services - Part 1  
10/15 (M) Mid-term exam  
10/17 Mid-term results review, RESTful Web Services - Part 2  
10/22(M) Serialization/JSON  
10/24 RESTful Web Services - Part 3 Due 11/1
10/29 (M)
XPath, jQuery  
10/31 (W) Quiz and jQuery/Ajax Due 11/8
11/5 (M) Server Side Scripting  
11/7 Data Sharing, EL (Expression Language)  
11/12 (M) EL (continued), Template/Servlet Interaction Due 11/18
11/14 XML  
11/19 (M) Integrated Frameworks - Spring  
11/21 No class - Thanksgiving Holiday  
11/26 (M) Quiz and Spring Controller  
11/28 Spring Model and View Introduction  
12/3 (M) Thymeleaf Due 12/16
12/5 Quiz and Client Side Scripting (e.g., React)  
12/10 Review  
Final Exam (5:30PM-8:00PM)
(exam will be 45 minutes, starting around 5:45PM)

Assignment Information

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. 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 since material from the assignments will frequently be included in quizzes and exams..

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, but be sure to include the names of all students participating in the assignment in the message body..

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


Ritu Kaushik

Anand Kulkarni

Anand Kulkarni

Naresh Nalam

Naresh Nalam

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

If you need to quickly set up an 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 and the instructor 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 questions 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. 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.

Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of University Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.


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.