What's New

Return to this page for the latest information on CSCI 5828.

Lecture 29

Lecture 29 is now available. Its a relatively short lecture since I anticipate using a chunk of Tuesday's lecture time to allow teams to present their "design problem" slides.

Lecture 30

Lecture 30 is now available. (Still working on Lecture 29!)

Lecture 28

Lecture 28 is now available.

Lecture 27

Lecture 27 is now available.

Class Project: Implementation Assignment

I have posted details on the implementation portion of the class project. Let me know if you have questions.

Lecture 26

Lecture 26 is now available.

FCQ Volunteer Needed

I need a student to volunteer to administer the FCQs for this class. I'd like to do the FCQs near the end of next Tuesday's lecture (April 24th). The volunteer would need to pick up the FCQ forms next Tuesday morning and then drop off the completed forms at the Dean's Office after the class. If anyone is interested, let me know!

Update to the Design Assignment

I made a small update to the design assignment. In particular, I added text that indicates that if you decide to update any of the artifacts that you created during the requirements portion of the class project to please include the updated artifact with your design assignment and include a short description of what changed and why.

So, for example, lets say you discover that your FSP specification was incomplete as you work through the design of your software system. Update the FSP specification to capture your new understanding of the concurrent behavior of your system and document the change and why it now better represents the system under design.

Design Presentations

Don't forget to document a design problem that you encountered while working on the design of the system you're building for your class project.

Feel free to send me slides at any point during this assignment and let me know if you'd like time to discuss the problem you encountered in class.

Note: you do not necessarily have to have a solution for the problem you describe. You can approach this portion of the assignment as a means to get feedback from your fellow classmates on the approach you should take to solve the problem your encountering.

Having said that, describing a problem and its solution is also good!

Lecture 25

Lecture 25 is now available.

Getting Real

Not this week, but next week, we will be spending time examining the development philosophy of 37signals, a leading "Web 2.0" company. We will do that by reading their book called Getting Real. This book is freely available on the web and is (fortunately) a quick read. I've invested 2 hours into the book so far and I managed to read 105 of 177 pages.

So, make the Getting Real website your home page for the next few days and start reading!

Requirements Documents: Graded

I managed to grade all 12 of the requirements documents that were submitted to me this past Thursday. I haven't updated the grades page yet but I did record your grades on the moodle.

I'm quite pleased, there were very few problems and a lot of high quality work. Kudos!

Projects Page Updated

I finally got around to updating the projects page with the remaining project ideas. With 40 students taking this class (10 CAETE, 30 in class), we have a total of 18 projects. Thanks very much to all of the students who formed multi-person teams!

Note: now that I have homework 3 graded, I'm turning my attention to grading the submitted requirements documents. My goal is to grade and provide feedback for each project that submitted a document on Thursday by no later than this coming Tuesday, hopefully sooner.

Homework 3 Graded

I have finished grading homework 3 and have posted the results to the grades table (and on the moodle).

Use of Agile Techniques at Adobe

Here is a pointer to a short article on the fact that Adobe attempted to shift away from a traditional software life cycle to a more agile approach to software development while working on Adobe CS3.

Design Assignment Available

The design assignment for the class project is now available.

No Office Hours Today (before or after class)

Due to two unfortunate circumstances (my wife is sick and our babysitter is on vacation) I can not hold office hours today either before or after class. I'll be coming on to campus today solely to give today's lecture and then must return back home immediately. My apologies!

Lecture 24

Lecture 24 is now available.

Lecture 23

Lecture 23 is now available.

Lectures 21 and 22

Both Lecture 21 and 22 are now available. (Lecture 21 was available yesterday but I forgot to announce it!)

Combined Midterm Results

40 students took the midterm. The highest score was 99. The lowest score was 61. The average score was 85.4 and the median was 86.5. The mode was 86 and the standard deviation was 10.3.

CAETE Midterm Results

10 CAETE students took the midterm. The maximum score was a 98, while the minimum score was a 62. The average score was a 85.9 and the median was an 89. The standard deviation was 12 points. Each CAETE student had a different score, so the mode (the most common score) is undefined.

Update on CAETE Midterm

As I mentioned in class on Thursday, I now have the midterms for all of the CAETE students. I will be grading these exams this weekend and will post stats here when I have them. If the CAETE office is open during spring break, I will send them back to you then. Otherwise, I will send them at the start of the first week after spring break.

In the meantime, have a good spring break and thanks for your patience!

In-Class Midterm Histogram

Here's a cheesy ASCII version of the histogram for the midterm for in-class students.

61 |#
69 |#
70 |#
71 |#
73 |#
76 |##
78 |#
79 |#
82 |#
84 |#
85 |#
86 |###
87 |###
89 |##
91 |#
92 |#
94 |#
95 |##
96 |#
97 |##
98 |#
99 |#

Note: due to giving a few points back to students after the midterm, the stats for the midterm have changed slightly. The new stats are:

30 students took the test. The maximum score was a 99. The minimum score was a 61. The average score was an 85.2. with the median at 86.5. The most common score was an 86 (or an 87) and the standard deviation was 9.9.

Projects Update

I have added information on a new project idea called Company Cars Monitor System. Currently this project has only one person working on it, and that person is looking for collaborators. If you still are not on a project team and you are interested in that project, let me know, and I'll arrange an e-mail introduction and hopefully you can get started on the project right away.

Talk by Bill Griswold

Today, we have a world-class software engineering researcher, Bill Griswold, visiting our department. Bill is a full professor at the University of California at San Diego and he is giving a colloquium today entitled "RealityFlythrough - A System for Ubiquitous Video".

The talk is from 3:30 PM to 4:30 PM in ECCR 1B55. If you are available, please attend the talk!

Lecture 20

Lecture 20 is now available.

Project Descriptions

The class website has been updated to list the project ideas and project teams that I know about. If you are on a project/team that is not listed, please send me a description and I'll add you to the list. If you want to update the text that is currently displayed for your project, send me the update and I'll get it published.

Lecture 19

Lecture 19 is now available.

Homework 3

Homework 3 is now available.

Waiting on one more midterm

Just a quick post to say that I'm waiting for the arrival of one more midterm from a CAETE student who took the test last Thursday. When it arrives, I will grade all of the CAETE exams and discuss the midterm in class.

As things stand, I now expect to discuss the midterm this Thursday.

Thanks for your patience!

Requirements Assignment

The requirements assignment of the class project is now available in the Assignments section of the website.

Lecture 18

Lecture 18 is now available.

Class Project

Information on the class project has been posted on the assignments page. Details on the first assignment related to the class project will be available by Thursday of this week.

Lecture 17

Lecture 17 is now available.


Testing. Please ignore this post. (Sorry!)

Update on the F-22 Software Glitch

In a recent lecture, I pointed the class at the recent software glitch encountered by the flight software for the newly deployed F-22 fighter jet.

A CAETE student sent me the following additional information on that incident:

It takes about 1.7 million lines of computer code to run the F-22A's
avionics, according to the Air Force. It turns out none of them deal with
what happens when the jet suddenly changes dates and time zones by crossing
the 180th meridian in the Pacific Ocean, the international date line. On
Feb. 11, when a dozen Raptors en route from Hawaii to Japan crossed the
international date line for the first time, the jetsí Global Positioning
System navigation avionics went haywire, forcing the pilots to turn around.
A GPS receiver uses signals from orbiting satellites to determine its
location, altitude and speed. 'This was the first time we've done it, so it
was the first time we saw it,' said Col. Tom Bergeson, an F-22A pilot and
commander of the 1st Operations Group, Langley Air Force Base, Va., which
deployed the Raptors. In less than 48 hours, F-22A contractor Lockheed
Martin delivered a software fix. An F-22A at Nellis successfully flew with
the updated software, Bergeson said.

Reminder: Midterm for CAETE Students

Quick reminder to CAETE Students: Your test proctor should have received the midterm early this week. You need to take the test such that your test proctor can mail it to me with a postmark of Tuesday, March 13th.

Please send me an e-mail when you have confirmed a time to take the exam with your test proctor.


Midterm Results: In-Class Students

I have finished grading the midterm for the in-class students. 30 students took the exam. The maximum score achieved was 99 points out of 100. The minimum score was 61. The average score was 84.7 with the median score being 86.5. The most common score, the mode, was an 87. Finally, the standard deviation was 10.1.


This website now features a page that displays the grades that students have been receiving in this class. It uses the nicknames that students supplied me at the beginning of the semester to associate grades with a particular student.

Please check this table and verify that the grades that it displays for homework 1 and 2 match the grades you received for these assignments in the moodle.

Talk on Software Architecture

I plan to cover Jalote's material on software architecture next week and it just so happens that a key contributor to research on software architecture will be giving a talk at CU next week. In particular, Eric Dashofy from UC Irvine will be giving a talk on Tuesday, March 13th, at 3:30 PM in ECCR 1B55 entitled "Supporting Stakeholder-Driven, Multi-View Software Architecture Modeling".

Eric's work on software architecture consists of three things: designing a language, called xADL, that allows engineers to model the software architecture of a software system, creating a set of tools, called ArchStudio, that allows engineers to create, visualize, and analyze xADL specification, and evaluating the use of these tools in real-world contexts.

If you have an interest in learning more about software architecture and are available at 3:30 PM next Tuesday, please come to Eric's talk!

Lecture 16

Lecture 16 is now available.

Advice for Midterm

Here's some advice for the upcoming midterm: be succinct when writing your response to a short answer question. For instance, if I ask something like:

What are the primary sub-processes of the product engineering process?

Don't give me a long drawn-out answer, just say:

Development, Project Management, Software Configuration Management, Requirements Change Management, and the Inspection process

That's the response that directly answers the question and will get you the most amount of points for the least amount of effort.

If you provide too verbose a response (and students often do this when they don't know the answer but are trying to earn partial credit), you end up short changing yourself on other problems that may require more time to solve.

So, when taking the midterm, be sure to first work on all the problems you know you can solve, providing short to-the-point answers to short answer questions. Then, turn your attention to questions that you are unsure of and attempt to answer them. This requires that you read the entire test before you start working on it, and do the problems out-of-order. But, you'll find that you will use your time more wisely and ensure that you answer all of the questions that you are capable of answering.

Hope this helps!

Extra Office Hours

I will be in my office from 10:30 AM to 11:45 AM tomorrow for extra office hours before the midterm. Feel free to stop by!

Doing Business with Humor

There is a great company that develops technical books for software developers called "The Pragmatic Programmers". One of their best features is that they allow you to buy books under development as PDF files and then to have the option of receiving a hardcopy when the book is finished. The PDF version of the book is then updated multiple times allowing the reader a chance to "see where the book is going" and to offer feedback and corrections along the way.

Its a great business model and I've purchased several of their books this way. (Disclaimer: I'm not affiliated with this company in any way, I'm just a happy customer.)

This morning I received an e-mail that one of my books had an updated PDF file ready for download. I clicked on the link and saw the following text:

Request Received

Your request to reship the PDF for TextMate has been entered into our fulfillment system. Teams of PDF-aware gerbils are this very moment limbering up to deliver your content.

Once they've finished, and we've cleaned the sunflower seed husks off your document, our system will be sending you an e-mail containing the download link.

Given the current backlog, we estimate that the time to create PDFs is 20 minutes. Please contact PragProg Support if your PDF isn't available by then.

When the PDF file had been generated (about 10 minutes later) I received an e-mail message that contained a link to the machine: <gerbils.pragprog.com>!

Anyway, I just wanted to comment that I love doing business with companies that are willing to demonstrate that the people working there have a sense of humor!


As you know, I'm not on campus this week due to family-related reasons. I did, however, want to provide an update on grading and what we will be doing in class over the next couple of weeks.

I am still working my way through the grading of Homework 1. I hope to have it and homework 2 graded by Tuesday of next week.

I then plan on spending lecture 13 reviewing these two homeworks and giving you a chance to ask questions about chapter 4 of the concurrency textbook that I discussed when pre-taping lecture 12 in an empty lecture hall!

Lecture 14 will be devoted to reviewing for the midterm which will occur on the Tuesday of the 8th week of class. I'll be posting information about how CAETE students will take the midterm (as well as when you need to take it by) next week.

As such, the midterm will cover all topics discussed during the first twelve lectures. We'll begin covering new material on the thursday of the 8th week of class. (I'll discuss the midterm itself in lecture once I have received all of the midterms from CAETE students.)

If you have any questions about the topics above, let me know!

CS Colloquium: Learning to Analyze Sequences

Tomorrow at 3:30 PM in ECCR 265, Fernando Pereira will be giving a department colloquium on the subject of Learning to Analyze Sequences.

Fernando Pereira is our MERVYN YOUNG Lecturer. He is the Rachleff Professor
and Chair of Computer and Information Sciences at the University of
Pennsylvania, and a very highly respected and dynamic researcher.

If you are available, please attend what looks to be a very interesting talk!

Developer Blogs

One of my favorite blogs written by a software developer, a blog known as ridiculous fish: serious code, has posted an excellent entry on issues related to multithreaded development. It has some excellent high level discussion backed by extremely low-level code. I learn something every time this guy posts to his blog. Take a look and enjoy! (Note: this post is NOT required reading for the class.)

Best post on ridiculous fish: The Treacherous Optimization

BTW, I love the combination of "excellent developer/excellent writer". Here are some additional pointers to good developer-written blogs:

Daring Fireball
Scripting News
Glorified Typist
Surfin Safari
Tim Bray
Loud Thinking
Michael Tsai
Joel on Software
Call Me Fishmeal


Lectures 11 and 12

Lecture 12 is now available. A placeholder for lecture 11 is also available. Full content for lecture 11 will be available by the time I pre-tape that lecture tomorrow!

Office Hours Cancelled

Tomorrow's office hours from 11 AM to 12 PM are cancelled.

Contact me by e-mail if you have questions for me!

Sorry for the late notice.

Pre-Taping Next Week's Lectures

Due to family-related issues, I'm not going to be able to come to campus next week to present lectures 11 and 12 in person. As such, I'm going to pre-tape those lectures THIS week.

In particular, I'm going to tape lecture 11 from 4 PM to 5:15 PM tomorrow and I'll tape lecture 12 from 2 PM to 3:15 PM on Friday.

If you can make it to one of the pre-taping sessions, terrific! Please come and ask questions! Note: I don't know which rooms I'll be using for these pre-taping sessions, but since CAETE only has three studios, it won't be difficult to find me!

If you can't, DON'T PANIC! Both lectures will be played by CAETE during our regular class time next week. Just come to lecture as you would normally and view the presentation.

If you have any questions, please let me know!

Lecture 10

Lecture 10 is now available.

Lecture 9

Lecture 9 is now available.

Student Comment on Software Process Improvement


One of our CAETE students who works for Northrup Grumman (NG) sent in the following comment related to Software Process Improvement and the Capability Maturity Model:

"Just to make sure the Lockheed guy doesn't steal all the thunder, Mission
Systems (the sector of NG I work for) is CMMI 5.  Your (and the student's
comments) about not being able to fix a typo with out going through all the
processes is absolutely correct, and it is very burdening.  The difference (as
I see it) between 4 and 5 is that even the processes are governed by processes.

I work on a large program, but we are a sub-contractor to a prime that shall
remain nameless.  We started trying to follow the CMMI 5 requirements from the beginning, but they quickly became a HUGE burden since the prime is (at best) operating at CMMI 3, but with very immature processes.  Thus, many programs tailor their processes and CMMI levels depending on the project's needs and phase of the program."

So, in some situations, you may be in a development organization that is operating at one level of process maturity and dealing with an external organization that is operating at a lower level of process maturity. This can lead to having to deal with scheduling, communication, and other problems that result when the external organization is unable to meet the quality standards of your own organization.

Thanks for sending in the comment and my apologies for forgetting to discuss it in lecture when talking about software process improvement!

How do you find Code?

A new search engine company, called Krugle, is interested in learning how students find answers to coding questions both inside and outside the classroom. They have created a survey that students can take to provide this information:

Krugle's "How do you find Code?" Survey

The survey consists of 10 short questions and, if you spend the time to take the survey, you can also help out our department's ACM Student Chapter. At the end of the survey, simply write "CU ACM" in the Department/Club field and "University of Colorado" in the University field. If 25 to 40 students take the survey and enter this information, Krugle will make a donation to the chapter.


Article on Parallel Computing Research

The EECS department of the University of California, Berkeley released a technical report on their view of the future of parallel computing research now that multi-core chips are being widely deployed. The technical report is called:

Lots of interesting information in there... enjoy!

Homework 2 Updated

Homework 2 has been updated to push back the due date by two days. Rather than being due on Tuesday, it is now due on Thursday. See the assignment and/or the moodle for specific dates and times for CAETE and in-class students.

Link to Older Version of LTSA

One student in the class was not able to run the current version of LTSA due to not having access to a computer with the Java 1.5 run-time. They contacted one of the authors of our Concurrency textbook and received a pointer to the older version of the LTSA tool. If you are having problems with the current version and want to give the previous version a try, you can find it here:

LTSA version 2.2

Homework 2

Homework 2 is now available.

Update to Lecture 5

I discovered the source of the formatting problem in Lecture 5. I have uploaded a new PDF file for that lecture. If you would like to have a properly formatted version of that lecture, simply download the lecture again.

Lecture 7

Lecture 7 is now available.

Interesting LTSA Behavior

Several students have noticed a quirk with the LTSA tool involving its processing of sets of action labels in FSP specifications. The difference occurs when the set of labels lead to a subsequent action, before going to another process.

To see the difference try compiling the following two similar FSP processes.

EXAMPLE1 = ({one,two}-> FOO | three -> BAR),
           FOO = (foo -> EXAMPLE1),
           BAR = (bar -> EXAMPLE1).

EXAMPLE2 = ({one,two}->foo -> EXAMPLE2 | three -> bar -> EXAMPLE2).

You will see that in EXAMPLE1 a state machine is created in which actions "one" and "two" both go to the same state. But in EXAMPLE2, a state machine is created in which "one" and "two" go to different states. Apparently, when a set of actions leads to an action (as in EXAMPLE2), a new state is generated for each action in the set of actions. If, however, a set of actions leads to a process (as in EXAMPLE1), all actions in the set lead to the same state.

This information will come in handy while trying to write the FSP specification for the third state diagram in problem 2.1.

Hope this helps!

Feedback from CAETE Students Needed


I'm curious how well the lectures are being captured by the Tegrity software. In particular, I'm interested to know if it correctly captures the transitions that I do when working with a Web browser. So, if I'm on slide 4 of a lecture written in HTML, and I switch to slide 5, does Tegrity capture that transition and display the new slide? Does it correctly display the text as I scroll up and down on one of the HTML slides?

Please let me know...


CAETE Student Seeks Collaborators

Jason LaBumbard, a CAETE student, is seeking collaborators to work on homework 1 with him. If you are interested in working with him, you can contact him at:

jason dot labumbard at colorado.edu

I will investigate to see if the moodle can support this type of coordination via its forums. Stay tuned.

Lecture 6

Lecture 6 is now available.

Homework 1

Homework 1 is now available.

Lecture 5

Lecture 5 is now available. It is provided in PDF format as I decided to re-use the slides that Kramer and Magee created for Chapter 2 of the concurrency textbook.

Lecture 4

Lecture 4 is now available.

Nicknames Needed


If your last name is listed below, I need you to call (303) 492-6003 and leave me a voice mail message with a nickname that I can associate with your real name. I'll use your nickname when publishing grades to the class website. When leaving your message, please spell your last name as well as your nickname. 

Names: Elumeze, Homaei, Korytina, Magill, Marbach, Mytkowics, Nuttycombe, Terada, Terkay, Bodenhorn, R. Miller



Lecture 3

Lecture 3 is now available.


I added a page to the class website that describes our two textbooks and links to their respective websites.


Would the person who claimed the nickname 'javaguru' please send me an e-mail message? I am unable to find you on my course roster, so I want to confirm that you have indeed enrolled in the class. Thanks!

Lecture 2

Lecture 2 is now available.

Lecture 1

Lecture 1 is now available.

Creating Web Site

Welcome to CSCI 5828 for the Spring 2007 semester! This site will serve as a distribution point for information about the class and will include pointers to lectures, assignments, class announcements, and more.

Furthermore, the content of this "What's New" page is syndicated. If you make use of a feed reader, you can subscribe to this site's RSS feed and be automatically notified when I post new information.

The URL of the RSS feed for this page is <http://www.cs.colorado.edu/~kena/classes/5828/s07/whatsnew/index.xml>.

If you have problems with or questions about this feature, let me know!

© Kenneth M. Anderson, 2007.