cmsc 838p, spring 2006: schedule

Please review the reading list and the guide to reviewing and summarizing papers in 838P as needed.

Please email me your review or summary before class begins. Please put [838P] in the subject line. And if at all possible, please submit your work in PDF or HTML format.

Some additional tips for a successful review:

Date

Topic

Assignment (due before next class session)

January 26th

Quick tour of 838p and software engineering research

Read pages 1-34 of Secure Coding and summarize. Also read about the principles assigned individually to you and be prepared to explain them to the rest of the class.

January 31st

"Why bad code happens to good people (part I)"

Read No Silver Bullet and summarize.

February 2nd

"Why bad code happens to good people (part II)"

Read Boehm and Beck and review both.

February 7th

Software engineering processes (spiral model, agile methods)

No assignment

February 9th

Software specification, part I: visual formalisms

Read STATEMATE: A Working Environment for the Development of Complex Reactive Systems and review it.

February 14th

Software specification, part II: visual "informalisms" and tabular formalisms

Project proposal due on February 16th

February 16th and 21st

Software specification, part II: visual "informalisms" and tabular formalisms

Read A Micromodularity Mechanism and review (due Thursday, 23 February).

February 23rd

Software specification, part III: set-based formalisms

Complete the elevator specification assignment. For resources on SCR-style tables, see Chapter 6 in Software Fundamentals (available on reserve in the CS Library) and this overview. This assignment is due on Thursday, March 2nd. You can hand in a copy to me in class.

February 28th

No class (because I'm at a workshop)

No assignment.

March 2nd-9th

The Alloy Analyzer

Read Chapter 7 (a poorly-typeset version is here) and Chapter 10 of Software Fundamentals and review both (due March 14th).

March 14th

Parnas on Design, part I: Information hiding

Project progress report is due on March 28th.

March 16th

Parnas on Design, part II: Program families

Read Chapter 14 of Software Fundamentals and review (due March 28th).

March 28th

Parnas on Design, part III: Subsets

If your last name begins with A-K: read chapter 15 of Software Fundamentals and review.
If your last name begins with L-Z: read chapter 16 of Software Fundamentals and review.

April 4th

Parnas on Design, part IV: More on information hiding

As a group (A-K or L-Z), prepare a 20-minute presentation on Chapter 15 or 16. You will present on Tuesday, April 4th.

April 6th

Aspect-oriented programming

Read Sections 1-4 of Kiczales-ECOOP97 and Sections 1-3 of Kiczales-ECOOP01. Write a 1-page paper that answers the questions "What is aspect-oriented programming?" and "What is AspectJ?".

April 11th

Aspect-oriented programming

Install Eclipse and AspectJ (AJDT) on your laptop. Download TerpCalc source code as well. Look at the forum for more details...

April 13th

Aspect-oriented programming

Read Ossher and Lieberherr and summarize.

April 18th-20th

Finish AOP

Read Aldrich and review. This review is due on Tuesday, April 25th.

April 25th-27th

Software Architecture

May 2nd-4th

Inferring specifications, architectures, or design decisions by analyzing code (static analysis) or analyzing traces from test executions (dynamic analysis). Adding annotations to code that explicitly provide info about requirements, architectural decisions, and design decisions.

May 9th-11th

Project presentations