Software Engineering

Thursday, May 1: Deployment Tuesday, April 29: Project workday Thursday, April 24: Project workday Tuesday, April 22: Documentation Thursday, April 17: Project workday Tuesday, April 15: Code quality Thursday, April 10: Project workday Tuesday, April 8: Testing Thursday, April 3: Testing Tuesday, April 1: Debugging Thursday, March 27: Design Tuesday, March 25: Version control Thursday, March 20: Requirements analysis Tuesday, March 18: Project Thursday, March 6: Security Tuesday, March 4: MVC Thursday, February 27: MongoDB Tuesday, February 25: Node Thursday, February 20: Guests Tuesday, February 18: Node Thursday, February 13: Javascript Tuesday, February 11: Javascript Thursday, February 6: Linux command line Tuesday, February 4: Linux command line Thursday, January 30: CSS Tuesday, January 28: CSS Thursday, January 23: HTML Tuesday, January 21: Introduction
Course overview

This course introduces the principles of software engineering. Any programmer can produce code, but writing quality software takes more than just coding. Working in teams, analyzing requirements, design, testing, and documentation are also crucial skills for a software engineer.

A secondary goal of this course is to teach you to create cross-platform web applications using HTML, CSS, and JavaScript. Developers for this type of software are increasingly in demand, and it will also provide a context for practicing software engineering skills.


CS 256. This course assumes that you have several semesters of programming experience.


There is no required textbook for the course. Instead, I will provide links to reading materials online. Reading is likely to improve your understanding of concepts from class, and in some cases may provide useful details that did not happen to come up in class.

Office hours

These are all the times when I'm likely to be in my office. Come by at any of these times and you will probably find me. If you want to be sure, you can make an appointment in class or through email.


If your learning or participation in this course may be affected by a disability or any other factor, please talk to me early in the semester so that we can arrange appropriate accommodations. I will do my best to ensure that everyone can learn effectively.


Being in class is crucial for your learning in this course. Absences will leave holes in your understanding of course concepts. If you must miss a class, you are expected to get caught up on what you missed before the next class.

Grading policy

Your final grade will be a weighted average of three components: quizzes (40%), homework (30%), and a project (30%). This table shows how course averages will translate to the 4-point scale. Be aware that I set a high bar for a 4.0 (an average of at least 96%).

Academic integrity

The St. Lawrence Academic Honor Code in your Student Handbook applies to this course. The specific policies for this course are supplementary to the Honor Code. I expect you to abide by Article I (Student Responsibilities), and I intend to abide by Article II (Faculty Responsibilities).


Assignments will be due approximately once per week during the first half of the course. They will help you master the tools you will need for the course project. Below are some specific rules for homework.


The second half of the semester will center around a course project. Along with a team of your classmates, you will develop a substantial web application. As you go through the phases of engineering, we will discuss principles for making your software reliable and maintainable.


A quiz will take place every few weeks. Some will be technical, focusing on the technology and tools of the course, and others conceptual, focusing on the principles and processes of software engineering.


Quick references:

Longer guides:

We will be using Sakai for homework submission and feedback.