Course Info

This page contains the syllabus for CS 169 – Software Engineering, Fall 2004.


Course personnel:

 

Name

Office

Phone

Email

Office Hours

Instructor

Ras Bodik

773 Soda

642-2488

bodik@cs

Tu 11am-noon (except first week)
or by appointment

G.S.I.

Gilad Arnold

TBD

 

arnold@cs

TBD

G.S.I.

Liviu Tancau

TBD

 

tancau@cs

TBD

  • Please put "169" in subject line when emailing us

    Time and Place:

    Lectures

    1

    MW 9-10:30

    306 Soda Hall

    Bodik

    Discussion Sections

    101

    W 3-4pm

    247 Cory

    TBD

    102

    F 10-11am

    3111 Etchevery

    TBD

    The TAs' section notes are available here.

    Course 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.  Students gain hands-on experience through a large course project, done in a team of 6-7 students.

    Course prerequisites:

    CS61A-C. It is very helpful if you have been already involved in a medium sized software project, perhaps a semester project in one of the project classes (CS162, CS164, or CS186).

    Tentative Syllabus & Schedule of Assignments

    Textbook:

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

    Recommended

    “Software Engineering. A Practitioner’s Approach”, by Roger Pressman

    “Code Complete”,  by Steve McConnell

    “Extreme Software Engineering. A Hands-On Approach”,  by Daniel H. Steinberg, Daniel W. Palmer

    Copies of the lecture notes will be made available on the course home page.

    Assignments:

    There will be a number (5 to 6) of assignments in which you will be guided in the use of standard tools for software engineering: debuggers, automated testing tools, version control, and bug finding tools.  

    Project:

    The major component of the course will be the course project. The project is split into several components. In the first component, you will have to write a short proposal for a project topic, in which you argue the usefulness and feasibility of the project. Ideally, you should propose a project for which you have a customer (friends, family, business entities, your pet, etc.). The course staff will then pick a number of the projects and you will have a chance to express your preference for what project you want to work on. We will assign people to projects based on their preferences and based on their declared expertise (or lack thereof). In the remaining stages we will walk you through collecting requirements, design, coding, testing. The design will be reviewed by one other team, and each team will also act as external tester for some other team. During the semester, members of the group will have to give short updates on the state of the project, in lecture presentations. These presentations will have a relatively low weight in the final grade but will prove invaluable to fellow students, who will learn from your experiences. The semester will end with a demo session.  

    The project is 50% of the grade, divided as follows: documents related to each stage roughly 20%, final demo 20%, and presentations 10%. The project grade will be adjusted by team review of each team member performed at the end of the semester.

    Late Policy:

    You will loose 0.5% of the score for an assignment, for each hour it is late.

    Examinations:

    There will be one midterm examination (in-class, closed-book). There will be no final exam. Instead, each project team will have to given an oral presentation and a demo about the project.

    Regrade Policy:

    Regrade requests will only be accepted for programming 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. For programming assignments, we will only consider regrades if we made a mistake in the grading of your project or if there was a small bug in your project that caused you to lose at least 10% of points. A small bug is one that can be fixed by changing very few lines of code without affecting the design or the algorithm in a significant way. All such requests must be made to your TA (not to the readers).

    Discussion Sections:

    Students are expected to attend discussion sections. Some relevant material, especially the details of the programming assignments and software tools, will be covered only in discussion sections.

    Grading:

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

    Homework assignments

    20%

    Midterm exam

    30%

    Project

    50%

    Academic Honesty:

    It is expected that all students understand University policies on academic honesty. 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 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.

    You should know that sophisticated plagiarism detection software may be used on the programming assignments.

    Handouts:

    Handouts will be available on-line on the class home page.

    Home Page and Newsgroup:

    The class home page for this semester is http://www-inst.eecs.berkeley.edu/~cs169. All course handouts, answers to frequently asked questions, lecture notes, and updates on assignments will be posted. The class newsgroup is ucb.class.cs169. It should be accessible from any Unix machine on campus via any newsreader (such as ` rn ' or `tin'). Please check the home page and newsgroup regularly for important course information. Students are responsible for changes to assignments posted on the home page or in the newsgroup.