software engineeringCS638: Software Engineering

Instructor: Ben Liblit, 6357 CS
office hours Thursdays, 11am – noon
TA: Sathya Gunasekar, 1301 CS
office hours Wednesdays, noon – 1pm

Section 1, Spring 2012
Tue/Thu, 2:30pm – 3:45pm
room 1257, Computer Sciences building

informationCourse Description

Building large software systems is hard, but experience shows that building large software systems that actually work is even harder. And trying to do all this before your competitors has proved fatal to many software projects. This course covers techniques for dealing with the complexity of software systems. We will focus on the technology of software engineering for the individual and small team, rather than business or management issues. Topics will include, among others, specifications, principles of design and software architecture, testing, debugging, static analysis, and version control. You are expected to actively participate in the classes.

This course is distinctive in the CS curriculum in that students are involved in a large-team project. You will see what it takes to collaborate with people with different skills and approach to software development. Students select the topics of the projects and almost all aspects of development (programming language, libraries, build environment, etc.).

warningWarning: this is a new course for the department. It is based on an excellent, successful course taught by Professor George Necula at UC Berkeley. However it is being taught here by me for the very first time. So along with all the great stuff you will be learning, you should expect a bit of chaos too. In some ways, you will be the test pilots (or guinea pigs?) who will help me experiment and refine this into a great UW–Madison course for years to come.

requirementsRequirements

Prerequisites

CS 367 is required. It is very helpful if you have been already involved in a medium sized software project, such as the semester project in a project class. For example, CS 536, CS 537, and CS 564 have significant projects that should prepare you well for this course.

Applicability Toward Degrees

An undergraduate working toward Bachelor’s degrees in Computer Sciences may count this course as a 500-level CS elective under part (3d) of the Required Course Work list.

A graduate student working toward Masters’s degrees in Computer Sciences may count this course as a 500-level non-core course, but not as a core-course.

A graduate student working toward Doctoral degrees in Computer Sciences may count this course as a 500-level Band 1 [Programming Languages and Compilers] breadth course, provided that PL is not also his or her qualifying exam depth area.

discussionDiscussion Forum

The discussion forum for this class is hosted by Piazza at http://www.piazza.com/wisc/spring2012/cs638. (Free Piazza apps for iPhone and Android are also available.) This discussion forum should be the first place you go for support, so that staff and students can cooperate to answer your questions, and so other students with the same questions can get answers. You can contact staff directly as described below if you have a private concern or are not comfortable discussing your question publicly.

materialsCourse Materials

There is no required textbook for this class. Instead I will assign readings from research papers. I also recommend the following textbooks if you want to read more about the topics covered in class:

materialsAssignments and Grading

Graded Tasks

You will be graded on a variety of tasks. There will be a small number (up to 5) of assignments. There will be one midterm examination. The exam will be given in class on a date yet to be decided, but probably after the actual midpoint of the semester. The major component of the course will be the course project. There will be no final exam. Instead, each project team will give an oral presentation and a demo about their project.

Deadlines and Late Policy

Each assignment is due by the date and time given in the course calendar. You will lose 0.5% of the score for an assignment for each hour it is late.

Regrade Policy

Regrade requests will only be considered for project assignments and exams. In either case, all regrade requests must be received within one week upon receiving your score. For exams, we will only consider regrades if we made a mistake in the grading of your exam. All such requests must be made to your TA.

Assignments related to the project can be submitted for a regrade only if your team received a low score and your TA agrees that corrections should and can be made. If this is the case, your team has one week after receiving your assignment score to submit a corrected version of the assignment to your TA. If all mistakes have been satisfactorily corrected, your TA will refund the lost points for that assignment. Keep in mind, however, that even if your team has done well on a particular assignment, it is still in your best interest to correct for yourselves all of the mistakes that have been marked.

Grading Breakdown

It is impossible to pass the course without doing the project. The relative weight of the components of your grade will be approximately:

Academic Misconduct

It is expected that all students understand University policies on academic conduct. Cheating on assignments or exams is very serious and will not be tolerated. All cases will be dealt through the University’s Office of Student Assistance and Judicial Affairs.

In this course, we will use a variation of the standard policy. In this class, it is permissible to talk to other students about assignments, to discuss particular solutions, and even to receive partial solutions (including code) from others. However, all assistance and cooperation must be cited in the assignment write-up. If you receive any assistance from anyone other than course staff or your partner on an assignment, you must acknowledge in the write-up for that assignment who gave assistance and what assistance was given. Grading will take into account how much help a student received from others: the more help, the lower the grade. Failure to acknowledge sources is plagiarism and will be treated as a serious breach of academic honesty. No assistance may be given or received on exams.