Course
CSE 405 Server Programming
School
CSUSB
Quarter
Winter 2014
Prerequisites
CSE 322 or knowledge of Web page programming
Class meetings
Wed 4:00 - 5:50, JB 359 attendance is optional
Textbook
Various readings available for free on the Web
Instructor
Dr. David Turner
Email
dturner@csusb.edu
Office hours
Mon 3:30 - 6:30, Wed 6:00 - 7:00, JB 340
Course website
http://csusbdt.github.io/405-2014
Google group
405-2014

Course Format

This course is 100% Web-based with an optional weekly meeting on campus. All reading material is freely available on the Web. In addition to the optional weekly meetings, you can communicate with the class as a whole by posting to the CSUSB CSE 405 Winter 2014 Google Group.

There are no exams; your grade is based on the timely completion of a sequence of assignments, which is maintained on the course website.

If you want to participate in discussion with other students and me, you should join the 405-2014 Google group.

You will maintain most of your work in a remote Git repository that I will set up for you. Only you and I will have access to your repository. I will evaluate your work by looking at your source code and testing a running instance of your code. I will create this remote repository for you after you start the first assignment.

Course Goals

The goal of this course is to increase your understanding of server programming. Certain topics covered in this course are common to all server programming problems, such as communication protocols, authentication, security, database access, and logging. Other topics are specific to the development environments of individual projects, such as Web applications, Git, Android SDK, Javascript, Node.js, and CouchDB. Therefore, the course encourages the acquisition of knowledge that is common to all server programming problems while developing specialized skills.

The techniques that you learn in this course for building Web applications can be applied to solve a larger set of programming problems that rely on the HTTP protocol, including native desktop and mobile applications that store application state in the cloud and interact with other users and systems.

Learning Objectives

Labs/Assignments

In this course, you will complete a sequence of assignments. The assignments involve research, programming and problem solving.

Programs that are incorrect or do not solve the stated problem will lose some or all points.

Work that is submitted late will lose some or all points.

If you submit copies of other people’s work, you will lose all points for that work. However, if you work with a partner, you can submit identical programs, but you need to refer to your partner by name in a comment at the top of your source code files.

Writing a program to produce required behavior is not good enough for a full score in this class; you must also write code that is readable by humans. Program readability is important because real­world programs are read over and over again in the process of fixing bugs and adding new functionality. Program readability will be evaluated according to the following set of criteria.

Readability Criteria for Source Code
Criterion Description
Cleanliness Have unnecessary variables and logic been removed from the code?
Logical indentation Does indentation show logical structure?
Consistent indentation Does indentation follow a consistent policy?
Portable indentation Are tabs omitted?
Logical spacing Does spacing show logical structure?
Consistent spacing Does spacing follow a consistent policy?
Expressive and clear naming Do variables, functions and classes have names that clearly express their purpose in the program?
Clear responsibilities Are responsibilities of functions and classes clear and consistent with their names? Is the code structured to avoid reliance on side effects produced by functions?
Necessary comments Are comments included when needed?
Unnecessary comments Are superfluous comments omitted?
Spelling Are user-defined identifiers free of spelling errors? Are comments and other documentation free of spelling and grammatical errors?
Nonredundant When 2 or more places inside a program need to perform the same activity, is that activity defined as a function and called as such from where it is needed?
Organization Is source code well organized into files and folders?

Don't use tabs for indentation in your source code in this course. Tabs display differently in different viewing and editing tools. In general, tabs will degrade readability for some people who read your code, especially if you mix tabs with spaces. If you want full score on your assignments in this course, you should not use tabs. If you are in the habit of pressing tab in your editor and want to continue working this way, look for an option in your editor to replace tabs with spaces.

System Requirements

You can do all required work in this course using any of the three common operating systems, Windows, OS X and Linux. All required software can be downloaded and installed for free.

It is probably more convenient to complete the course assignments using a personal computer. However, computers are available in JB 358 and JB 359 that you can also use. The open times for accessing these labs is available from the CSE website or by contacting the CSE main office.

This course relies on resources that are out of the control of the University, such as Google Groups, Heroku Web application hosting service, Android developer SDK and other free resources accessible through the internet. The University will not provide technical support for these resources and the University does not endorse any products which may be advertised through these resources.

Grading

Each assignment is worth 100 points. Your score will be computed by dividing the total of all points earned by the total possible points. The normal scale will be used to assign a letter grade.

Percent Grade
95 - 100A
90 - 94A-
87 - 89B+
84 - 86B
80 - 83B-
77 - 79C+
74 - 76C
70 - 73C-
67 - 69D+
64 - 66D
60 - 63D-
0 - 59F

Students with disabilities

If you are in need of an accommodation for a disability in order to participate in this class, please let me know as soon as possible, and also contact Services to Students with Disabilities at UH-183, (909)537-5238. You are advised to establish a buddy system and alternate in the class if you require assistance in the event of an emergency. Individuals with disabilities should prepare for an emergency ahead of time by instructing a classmate and the instructor.

Academic Regulations and Procedures

See the CSUSB Bulletin of Courses for the University's policies on course withdrawal, cheating, and plagiarism.

Computer Science and Engineering Club

The Computer Science and Engineering Club is a student-run organization that uses a combination of email and campus meetings to plan events, ask and answer technical questions, post job and internship openings, and discuss other topics of interest to computing majors at CSUSB. Club­sponsored events include seminars, workshops, tutoring and fun activities.