Instructor | Announcements | Course Info | Class Material | Schedule | Project | Grade | General Policy | Related Links


CmpE 207
Network Programming and Application
Spring 2015
College of Engineering




Richard Sinn
Office Hours: After class, by appointment or email only

Richard is currently a Senior Software Development Manager at Adobe. He is responsible for a suite of mobile and desktop software. Before Adobe, he was a Principal MTS/Director at eBay looking over various security projects. Prior to that, he served as a Security Architect/Manager at various Yahoo business units (Real Time Communication group, Yahoo Community, Yahoo Communications) from 2005 to 2011. He has also held various senior positions at IBM, Oracle and different Silicon Valley startup companies. Richard is an inventor and has filed over 20 patents. He has published a college textbook (Software Security Technologies). He is also a frequent writer for various magazines and journals, and a frequent speaker at regional and national technology conferences. As a scholar and supporter for academia, he has been teaching in the Computer Engineering and Computer Science departments at San Jose State University since 1998. He also served as Adjunct Professor at the University of Minnesota.



Check back every now and then for updates.


Students who do not provide documentation of having satisfied the class prerequisite and co-requisite requirements (if any) by the second class meeting will be dropped from the class.

New Prereq check procedure

We will adopt a new procedure (akin to that used by some of the other engineering departments):
At the beginning of the term, have all the students in the class provide a copy of their transcripts, with the prerequisite class grade highlighted. The instructor will then check off against the roster, and drop any and all students who do not provide such proof of having completed the prerequisite with a satisfactory grade.
For classes with co-requisite requirements (such as CMPE 110), the student will provide the transcript (proving that the class has already been passed) or a printout from MySJSU (proving that the student is currently enrolled). Add the following to the class greensheet: ”Students who do not provide documentation of having satisfied the class prerequisite and co-requisite requirements (if any) by the second class meeting will be dropped from the class.



Bring a computer to class. You will need that for lecture assignment.


Add permission code

Please check back.

Honesty Pledge can be downloaded here.


Class time:

Every Monday at 6:00pm

Class room:

Boccardo Business Center 004

Other Info:

Section: 01, Code 42606, Units 3, Type LEC.



Course Information

Course Catalog Description

Development and implementation of networking software for building distributed applications. Application Programming Interfaces: BSD Sockets, Winsock, Remote Procedure Call and Middleware. Network programming project. Prerequisite: CMPE 206, or instructor consent.


Program Outcomes

1. Be able to demonstrate an understanding of advanced knowledge of network programming, network architecture and applications.

2. Be able to create different types of applications that use network programming in various different computer programming languages.

3. Be able to demonstrate leadership and the ability to participate in teamwork in an environment with network programming and applications.

4. Be aware of ethical, economic and enironmental implications of their work, as appropriate.

5. Be able to advance successfully in performing future research in network programming and applications.

6. Be able to communicate effectively, in both oral and written forms.


Course Goals and Student Learning Objectives

1. To provide an advaned overview of network programming and applications.

2. To provide in-depth implementation opportunities for network programming and applications.

3. To provide an introduction to advanced topics such as nodejs, multi-threaded network programming, mobile network programming and applications.



Apart from big term project(s) and presentation, there are homework assignments, a mid-term exam and a final exam. Some exams might be take-home. The weightings for grading are: Term Project(s) 40%, Homework 20%, Midterm 10%, Final Exam 10%, and Team Presentation / Lecture assignments 20%. Schedule and course materials subject to change with fair notice. Success in this course is based on the expectation that students will spend, for each unit of credit, a minimum of forty-five hours over the length of the course (normally 3 hours per unit per week with 1 of the hours used for lecture) for instruction or preparation/studying or course related activities including but not limited to internships, labs, clinical practica. Other course structures will have equivalent workload expectations as described in the syllabus.

No Late Assignment Submission. Put everything in an envelop when submit any material.


University Policies

Academic integrity

Students should know that the University’s Academic Integrity Policy is available at Your own commitment to learning, as evidenced by your enrollment at San Jose State University and the University’s integrity policy, require you to be honest in all your academic course work. Faculty members are required to report all infractions to the office of Student Conduct and Ethical Development. The Student Conduct and Ethical Development website is available at  
Instances of academic dishonesty will not be tolerated. Cheating on exams or plagiarism (presenting the work of another as your own, or the use of another person’s ideas without giving proper credit) will result in a failing grade and sanctions by the University. For this class, all assignments are to be completed by the individual student unless otherwise specified. If you would like to include in your assignment any material you have submitted, or plan to submit for another class, please note that SJSU’s Academic Policy F06-1 requires approval of instructors.

Campus Policy in Compliance with the American Disabilities Act

If you need course adaptations or accommodations because of a disability, or if you need to make special arrangements in case the building must be evacuated, please make an appointment with me as soon as possible, or see me during office hours. Presidential Directive 97-03 requires that students with disabilities requesting accommodations must register with the Disability Resource Center (DRC) at  to establish a record of their disability.

Dropping and Adding

Students are responsible for understanding the policies and procedures about add/drop, grade forgiveness, etc.  Refer to the current semester’s Catalog Policies section at   Add/drop deadlines can be found on the current academic calendarweb page located at  The Late Drop Policy is available at  Students should be aware of the current deadlines and penalties for dropping classes.

Information about the latest changes and news is available at the Advising Hub at






Class Material

Lecture Notes


Network Part

Data Communication and Networking, Fifth Edition, Dehrouz A. Forouzan


Lecture Notes


Non-Textbook: Reading material will be online on this web site before every lecture.




Classic Materials



Jan 26, 2015 - Mon

  • Course discussion
  • Network Introduction - Layering
  • Admin: Check prereq and sign statement
  • Homework 0: Download Wireshark and try it out by next week's class.
  • Admin
    • Add code
      • Come to class
    • Prereq
      • You must show me you have prereq by either showing me in the SJSU system or other universities
      • Sign the honesty pledge



Feb 2, 2015 - Mon


Feb 3, 2015 - Tuesday

  • Last Day to Drop Courses Without an Entry on Student's Permanent Record (D)


Java Network Programming

Feb 9, 2015 - Mon


  • Lab 2 - Due via email
  • Lab 2:
  • Create your own Java Fraction Class, your class must support the following:
    • Two Constructors
    • Addition for Fraction
    • Subtraction for Fraction
  • Create a FractionDriver Class to test your Fraction Class
  • Both class must be in a package called MyCoolMath


Feb 10, 2015 - Tuesday

  • Last Day to Add Courses & Register Late (A)

Feb 16, 2015 - Mon


Feb 23, 2015 - Mon

  • Grade for HW1, Lab 1, Lab 2 discussion
  • General tech discussion


Mar 2, 2015 - Mon

  • General Server Design
  • Thread Part 1 (External sources)
  • Java Socket
  • Lab: Server Apps (Client and Server Pair)
  • Homework 2 - Web Dev Env Setup and Analysis
  • Group Homework
    • From a group of 6 or 5 members
    • Pick a group name
    • Send an email with subject Group HW - <Group Name>
    • List the members of your group in the email. We only need one email per group
    • Email to both Prof and ISA
  • Group Homework Due End of class


Mar 9, 2015 - Mon

  • Java Thread Part 2
  • Lab
    • Change your EchoServer (from last week's lab) to enable it to handle multiple EchoClients
    • Implement two versions of the EchoServer that uses Thread and/or Runnable interface
    • Set the Priorty of the Thread
    • Does setting a higher priorty or lower priorty changes the behaviors of the EchoServer?
    • Email source code and answers of question to me.
    • Due tomorrow at 3pm.
  • Homework 2 Due (Chance 1)
  • ISA
    • Lab discussion
    • Wireshark discussion (tutorial)


Mar 16, 2015 - Mon

  • Mid term
  • Open Mind
  • Short questions format and programming
  • Individual work.
  • Homework 2 Due (Chance 2)


Mar 23 to 27, 2015

  • Spring Break - No Class


Mar 30, 2015 - Mon

  • Mid term review
  • Mid term curve:



Apr 6, 2015 - Mon

  • Peer visit
  • Lab Backend Server Programming due
  • PHP 1
  • Lab
    • Modify the EchoClient to allow input of <file name> from the file system.
    • Design a mechanism where you can allow input of one or more files.
    • Read the file using <file name> and send the content of the file to the EchoServer
    • Modify the EchoServer to save the <file name>.
    • Research - If you need to change the EchoServer to a php backend. What do you need to do?
      • List all the implementation steps needed.
      • (You basically need to use HTTP to send the file over and save using php in the backend).
    • Email both coding and research answer to TA and cc Prof Sinn from grading.


Web and Mobile Network Programming

Apr 13, 2015 - Mon

  • Project Discussion / Q&A
  • Review Last week's Lab
    • Networking programming with Java client and php web backend
    • Use httpurlconnection - doc under
    • setRequestMethod to POST
    • A few lines of code you have to build for today's lab
  • PHP 2
  • Lab
    • Modify the EchoClient to allow input of one of more files
    • Using network programming to send over the files to a php backend.
    • Using the php backend to save the file on the server.


Apr 20, 2015 - Mon

  • Come signup for 295A projects if you are interested
  • PHP 3
  • CURL Intro
  • cURL Manual -
  • What to submit for your project:
  • Project Info
  • You must use to submit your final report. Here is the info:
    • Class ID: 9868328
      Enrollment password: richardsinn
      Class name: CMPE 207 - Spring 2015

    • There are three assignements:
      • "Project Report - Individual Part" is for you to submit your final report.
        • Each member of a group needs to submit his/her part of the project.
        • This short project report should include the following sections:
          • Client side: Description of technologies used, architecture, design, etc.
          • Web Server Backend: Description of technologies used, architecture, design, database schema, etc.
          • Test Cases: Ten detail test cases of how to test your client side and server backend.

      • "Project Report - Team Part"
        • Only one member of the group needs to submit this part.
        • This project report should include the following sections:
          • Interdomain communication: Details descrption of how interdomain communication is achieved: architecture, design, etc.
          • Extra features: Description of any extra features implemented in the project
          • Test Cases: Ten detail test cases of how to test your interdomain commmunication.

      • "Test Paper - Do not submit real report"
        • A test assignment for you to test use if you have not done so before. Please do not submit any real report.

Apr 27, 2015 - Mon

  • More PHP
  • Project Q&A
  • Node JS Intro (External Sources)
  • Lab: Note.js Setup and Implementation
  • Presentation Order:
  • May 4:
    • Xcoders
    • The Socketeers
    • Servers
    • Tech Pirates
    • Woohoo!
    • Socket Programmers
    • Mavericks
  • May 11:
    • The Sparkle
    • Alpha
    • ManuFC
    • Group 9
    • Spartan Sockets
    • Socket #130
    • Socket Snipers


May 4, 2015 - Mon

  • Project Report Due
  • Extra Credit Homework is HERE
  • Project demo/presentation day
    • Please come to class on time
    • Prepare a piece of paper with all members' names printed clearly on it
    • Prepare another piece of paper with 10 detail test cases
    • Come to the front and present your project
    • 15 min max per group (5 min presentation, and 10 min demo)


May 11, 2015 - Mon

  • Project demo/presentation day
    • Please come to class on time
    • Prepare a piece of paper with all members' names printed clearly on it
    • Prepare another piece of paper with 10 detail test cases
    • Come to the front and present your project
    • 15 min max per group (5 min presentation, and 10 min demo)


May 18(TBD), 2015- Mon - Final Exam

  • Starts at 6pm, same room, 1 hour
  • Extra Credit Homework Due (Hardcopy)
  • Comprehensive, cover all topics.
  • Check grade at my.sjsu. Grade will be not be given via email.
  • No computer and Internet connection.





Term Project


Team File Sharing


The term project is a continuation of the lab exercises in class. The coding is a little more complex and it is done in a team environment. The goal of the project is to exercise the two different types of programming languages your learned for network programming. Please form a team of 4 or 3 for the term project.

Client Side

Using the Java programming language, design and implement a socket program that will enable a user to upload photos to the web server backend. Your program should allow user to upload one or more photos to the web server backend.

Web Server Backend

Using the php programming language, design and implement a web server backend that will enable the Java client side program to upload photos and save at the web server. Your program should allow a user to upload/save one or more photo files to the web server backend.

Interdomain Communication

Between web server backend domains, design and implement a cross domain communication mechansim using CURL to allow a file from one domain to be sent and saved in another domain.


In a group of four, you should have four pairs of client side and web server backend programs. And the web server backend programs should be able to cross communicate with each other to save files.



The requirements for the term project is flexible to allow room for creativity. Individual team can decide the following:





Check grade at my.sjsu. Grade will be not be given via email.


General Policy

The university and departmental policies and deadlines for course drop will be applied. Makeup exams cannot be offered, except under exceptional conditions, such as documented serious illness/accident, etc., and only at the professor's discretion.

Each student is responsible for his/her individual assignment, and must not copy anyone else's work. Students who borrow solutions from others will find themselves unable to pass the course. The minimum penalty for every student involved in the duplication of individual assignments or exams will be receiving a zero score on the submitted work.

For group project, all the work has to be done by your OWN group. Do not try to download "free code" from the Internet and hand in as a project. WE WILL FIND OUT. Do not share your work with others. So DO YOUR OWN WORK and EARN your grade.x


Related Links

ISA Tips



Instructor | Announcements | Course Info | Class Material | Schedule | Project | Grade | General Policy | Related Links