Syllabus

[top]

Description & Goals

Software engineering is about predictably delivering software systems of finite quality, on a finite schedule, for finite cost. Developing software remains a challenging activity, with constant pressure to do it better, faster, and cheaper.

A traditional software engineering course typically discusses requirements gathering, architectural diagrams, estimation, scheduling, process, and project management. In general, it is about the strategy of reliably delivering software in resource-constrained environments, often making tradeoffs, between quality, time, and cost.

This course focuses on the challenges of implementation. We will develop a modest distributed application in the Go programming language using some of the following tactics to manage the complexity of modern large-scale software systems: change management, automated build systems, unit testing, bug tracking, code reviews, logging & logs analysis, debugging, refactoring, automated deployment, monitoring, load testing, and load balancing.

It's all about that code.

Prerequisite: CSS 342 with a grade of 2.0 or better.

[top]

Administrivia

Location & Time

Professor: Morris Bernstein

[top]

Textbooks

Textbooks are expensive and the tools explored in this class are open-source, so we will use available online documentation for primary reference material (yay!).

See the Resources section on the main course website for web sites and printed publications.

[top]

Assignments and Grading

As this course is focussed on implementation, 100% of the grade will be determined by assignments. Assignments will be graded by the instructor's subjective assessment of whether the pedagogical goal was met. Full enrollment is 45 students which gives a time budget for grading of about 10-15 minutes (closer to 10!) per person per assignment. Individual feedback will be limited.

Assignments are to be handed in by 11:30 pm on the due date. Acceptance of late assignments will be determined on a case-by-case basis. Turn in your assignments using catalyst.

While you are encouraged to discuss the assignments with your peers, do not crib off each other. Make sure you know where to draw the line. If you crib off the interwebs, cite your source(s)1. Not citing sources will make your instructor cranky.

Where assignments build on prior assignments, you may use a peer's earlier submission, provided

  1. You cite the source, and
  2. the source gives permission.

See the Assignments section on the main course website.

If a grade is egregiously out of whack with your expectation feel free to ask for another look; with the time limitation on grading, overlooking something is easy to do. Just be aware that reevaluation may cause the grade to go up or down.

Final grades may be adjusted at the instructor's discretion.

[top]

Policies

Live lectures are inherently interactive. Questions during class are encouraged. Please raise your hand or dance like a chicken to get the instructor's attention. At the instructor's discretion, answers may be tabled until the end of class if they are too far off topic.

Limit computer use during class to note-taking so as to not distract or disturb your classmates or your instructor. Since a large part of the presentation involves diagrams, it may be more convenient to turn off the computer and take notes the old fashioned way. Quill pens are optional.

Flash photography is not permitted. Non-flash photography to capture the white board will be permitted as long as it is not disruptive or distracting. Don't even think about video.

Silence your cell phones.

If you arrive late or have to leave in the middle of class, do so quietly without causing disruption.

Simple email questions may get a response. Complex questions are best saved for office hours.

Special-needs students:

To request academic accommodations due to a disability, please contact Disabled Student Services (DSS) at 425.352.5307, 425.352.5303 TDD, 425.352.5455 FAX, or at dss@uwb.edu. You will need to provide documentation of your disability as part of the review process prior to receiving any accommodations (by the third week of the quarter).

Academic Conduct

Please review the Student Guide to Academic Integrity

Assignments and projects are to be done independently unless otherwise indicated. Their purpose is to help you understand technical material. By all means, discuss the problem statement and help each other debug, but do your own design and coding. See the student honor code, particularly the section on academic misconduct.

Your instructor hates filling out that kind of paperwork and it makes him grumpy. Avoid making your instructor grumpy.

Remember: integrity is what you do when no-one's watching.

[top]

Tentative Schedule

Subject to change as the quarter progresses.

Week Date Lecture # Topic Assignment
1 Jan 5 1
Jan 7 2
  • Go (cont.)
2 Jan 12 3 Assignment 1 due (Jan 13)
Jan 14 4
3 Jan 19 5 Martin Luther King Day: no class Assignment 2 due (Jan 20)
Jan 21 6
4 Jan 26 7
  • scaffolding
  • debugging
    • debug-log messages
    • symbolic debuggers
  • code reviews
Assignment 3 due (Jan 27)
Jan 28 8
5 Feb 2 9 Assignment 4 due (Feb 3): TBA
Feb 4 10
6 Feb 9 11 Assignment 5 due (Feb 10): TBA
Feb 11 12
7 Feb 16 13 President's Day: no class Assignment 6 due (Feb 17): TBA
Feb 18 14
8 Feb 23 15 Assignment 7 due (Feb 24): TBA
Feb 25 16
9 Mar 2 17 Assignment 8 due (Mar 3): TBA
Mar 4 18
  • additional topic (TBD)
10 Mar 9 19
  • additional topic (TBD)
Assignment 9 due (Mar 10): TBA
Mar 11 20
  • wrap-up
11 Mar 16 Final Exam: N/A Assignment 10 due (Mar 17): TBA
 

Footnotes