TC 359: Server Side Web Development

Spring 2014

Instructor: Professor Rick Wash
Lecture: Wednesday, 1:50–2:40; CAS 165
Lab 1: Wednesday, 3:00-4:50, CAS 236
Lab 2: Wednesday, 5:00-6:50, CAS 236
Office Hours: Wednesday 12:00-1:50, room 342

Course Description

Many modern applications are deployed over the web. These applications are split over two components: 1) the server side code that executes primarily on the web server, and 2) the client side code that executes in the context of a web browser on the user’s computer. In this course students will learn the basics of writing this type of application using the Ruby on Rails framework. We will focus on the work that needs to be done on the server side to dynamically generate webpages, store data long-term in a database, and process requests from the client side. In addition, students will become familiar with one architecture for large-scale user-facing applications: the model-view-controller design pattern. By the end of the course, students will be able to design and develop their own modern web applications.

Course Structure

Each week of this course will consist of approximately 1 hour of lecture and 2 hours of lab work. This is a hands-on class; students are expected to spent most of the class programming. Lecture will primarily consist of the instructor explaining core concepts while developing a simple web application. Then you will be expected to do small exercises in lab to gain experience with these concepts, with the assistance of other students and the instructor. Assignments will ask you to integrate these separate skills to develop a more fully-featured web application. Finally, there will be a self-directed group project where each group of students will develop a working web application and demonstrate it for the class.

The weekly schedule of topics is available.


There are seven total assignments for this course. The first three assignments are individual assignments designed to help students learn to integrate the material into a working applications. These three assignments are cumulative; assignment 2 builds on assignment 1, and assignment 3 builds on the previous two. In this way, students will learn how to incrementally build a working application by separately developing and testing the components/features.

The last four assignments are a large group project. Each group will have to propose and implement a modern web application, including design, development, and testing. The four assignments are simply various milestones in this process. Real-world applications are commonly developed in larger teams and involve longer timeframes, but the same process is used as we will use here

In addition, all students are required to attend all lab sessions for the class. Students may leave lab early when they finish the lab with their partner, but attendance at all labs is required. Attendance at lecture is technically optional, but will prove to be highly valuable to completing the labs and assignments.

The individual assignments, as a group, are worth half your grade. This means each one is about 1/8 of your final grade. The group project is the other half your grade.


Both textbooks can be purchased online in PDF form for about $27-$28 each. This is a great deal, and much cheaper than buying paper copies. Click on the links above.


Expectations: I expect all students to be familiar with the documents related to this class on this website, and to be aware of all assignments and responsibilities. Students are also responsible for knowing all announcements in class and over email.

Assignments: Assignments can be submitted via email to the instructor, and by putting them in the appropriate directory on the server. Assignments will be deducted one letter grade for each day late; in other words turn in your assignment on time. Of course, if negotiated in advance, reasonable exceptions may be granted by the professor.

Attendance: Students are expected to attend their assigned lab section. The main reason for this is that the lab sections is where the real learning happens in this class; you will develop and practice new skills in programming web-based applications in labs. Also, this class employs a pair-programming structure, so you will also be working with at least one other student on the labs.

Academic Dishonesty: Michigan State University and the Department of Telecommunications, Information Studies, and Media both have policies about academic dishonesty. Basically, make sure that everything you turn in with your name on it is your own work, and don’t cheat or lie. If it feels like cheating, it probably is; if you are unsure please ask. Students caught cheating or plagiarizing will receive a 0 for the assignment and be reported to the university. Working together with other students in this class and other classes, however, is encouraged. Make sure that everything you turn in with your name on it is original work of yours.

For classes that involve programming like this, I strongly encourage you to work together and ask each other for help. Often when you have a problem or a nasty bug, the best place to go for help is your colleagues who are also working on similar code. Also, the Internet is a fantastic source of information when you are stuck. Use these resources copiously. However, make sure that you personally write and understand all of the code that you turn in. Directly copying code that you don’t understand from the Internet or from others is both academically dishonest, and will make your application very difficult to debug.

Accommodations for Disabilities: If you have a documented disability from the Resource Center for Persons with Disabilities and wish to discuss academic accommodations, please contact the professor by the end of the second week of class.

Religious Holidays: You may make up course work missed to observe a major religious holiday only if you make arrangements in advance with the instructor.

Required Activity: To make up course work missed to participate in a university-sanctioned event, you must provide the instructor with adequate advance notice and written authorization from a university administrator.