What's New

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

Final Grades

I have posted the second to last update to the grades page. This update shows the final scores for all but one CAETE student. I will be submitting grades for in-class students this week and will submit scores for CAETE students by the end of this week.

Hope you enjoyed the class and have a good summer!

Don't Forget: Team Evaluations

Do not forget to send in team evaluations for the implementation portion of the assignment. I'm hoping to get most of the projects graded by tomorrow and submit grades by tomorrow afternoon. In order to do this, I will need your team evaluations by Friday morning. Thanks!

Project Demos: Thursday, 1 PM to 3:30 PM

Hi. As mentioned in class yesterday, I will be holding office hours from 1 PM to 3:30 PM in ECCS 127 (a conference room located across from the CSEL) on Thursday. Teams can come and give their final demos to me on a first come, first served basis during that time.

Please bring a laptop to do the demo on and provide me with hard copies of your project documents.

Any questions? Send me mail.

Lecture 29

Lecture 29 is now available.


The grades for the design assignment have now been posted. The grades table now shows a column for total number of points received, plus a column that shows the percentage that score represents towards the total number of points in the class (currently 490 points, after the implementation assignment, the total will rise to 615 points.

Some students have more points than the total number of points so far. How is this possible? It is a result of a decision I made with respect to how to factor in the reviews. A ✓ provides one point of extra credit. A plus provides 5 points of extra credit. A student who received even a fair number of pluses, will see a noticeable boost to their overall score. Note: I still reserve the right to use the reviews as a way to negatively impact a grade: it isn't fair to the students who worked on all ten reviews to not have a penalty associated with students who blew off all or most of the reviews.

Let me know if you have any questions.

Lectures 26–28

I posted lectures 26 and 27 last week but forgot to announce that here. Today, I've posted lecture 28 as well. All are available, as usual, on the lectures page.

Tim Bray's Wide Finder Project

Click on the link in this post, if you are interested in learning more about Tim Bray's Wide Finder project.

Computer Science Company Information Fair

Next week there will be a "company information fair" held by the computer science department in the CSEL. Details below. This is a great opportunity for both undergraduates and graduate students to learn about local technology companies. Please attend!

ACM's 1st Annual Computer Science Company Information Fair


Wednesday, April 23rd from 1-4p.m.

The following local companies will be participating:

Presented by CU's ACM Student Chapter, representing the ACM: The World's Premier Computing Society

If you have any questions, please contact Alan Versteeg at mark.versteeg@colorado.edu

Lectures 24 and 25

The slides for lectures 24 and 25 are now available.

Project 4: Implementation

Details concerning the last part of the class project are now available. Note: there will be no more review assignments. Please devote the remainder of your efforts with respect to this class working on your class projects.

Team Member Evaluations

Now that the design assignment has been submitted, please remember to send me your team member evaluations. Thanks to all the students who have sent them in so far!

Schedule for the Rest of the Semester

We have seven more lectures (including today's lecture) in the semester. Here is my tentative plan for these lectures. Today and next week, we will be looking at the issue of testing. Please read chapters 8 and 9 in the Pfleeger book for these lectures. I will then spend one or two lectures returning to the topic of concurrency and examine the results of Tim Bray's WideFinder project. I'll then include a lecture on Web 2.0 and its implications on the development of Web applications and finally we'll look at the development philosophy of a successful Web2.0 company known as 37signals. For that lecture, please read their collection of essays called Getting Real. It doesn't take long and its a fun perspective on software development.

Review 10

Review 10 is now available. Note: this is a team-based assignment that asks you to develop a set of slides describing a design-related issue that your team is facing, what alternatives you considered, and what (if any) solution you adopted.

Lectures 20, 21, and 23 (!)

The slides on software design that were presented during lectures 20, 21, and 23 are now available.

Project 2 Grades

Grades for Project 2 have been posted on the moodle and on the grades page.

Talk on Agile Software Development

The following talk will take place next Wednesday, April 9th at 6:30 PM in the CSEL. If you are interested in Agile development techniques and FREE PIZZA, then I encourage you to attend!

Intro to Agile Development: Principles and Beyond

Agile software development is about finding better ways to deliver software than the way we’ve always done it. It’s based on a simple set of principles—things that we believe are true about software development. In this talk, Richard Lawrence will introduce the core agile principles and show how they’re applied in Scrum, Extreme Programming, and Lean Software Development…and how you can apply them on your projects. There will be time for questions and discussion to dig into the areas that interest you most.

Speaker Bio

Richard Lawrence is Solutions Manager for Agile Delivery at Avanade, Microsoft and Accenture’s joint venture. He has been practicing agile software development with XP, Scrum, and Lean since 2001 and is passionate about helping software teams work more productively and more sanely at the same time (yes, it’s possible!). Richard is a Certified Scrum Coach and was a speaker at the Agile 2006 and Agile 2007 conferences.

Follow-Up on Lecture 22

I have posted the “Rent Video” activity diagram and its associated use case today. The use case and activity diagram are adapted from an example that appeared in the book "Requirements Analysis and System Design: Developing Information Systems with UML" written by Leszek A. Maciaszek, Pearson Education Limited, 2001. Note: This is not the same activity diagram that I presented in class yesterday. I modified it to fix a few errors and to make it better match its use case. Enjoy.

Lecture 22

Lecture 22 is now available. Lecture 21 is MIA because we haven't finished its material.

Review 9

Review 9 is now available. It will be due this Sunday for in-class students and next Sunday for CAETE students.

Slight Update to Third Project Assignment

I made a slight change to the third project assignment, asking for you to create a few activity diagrams during this stage as well. I'll be covering activity diagrams today in class.

Design Assignment Now Available

The third assignment of the project is now available. It is due two weeks from today.

Grades Page Updated

The grades page now has marks for review 8 and has had a couple of updates to the midterm and project 1 columns.

Update on Midterm

I finally finished grading all of the midterms. Due to a variety of delays, 4 midterms were not graded until today. With these final scores, I can provide one additional update on the midterm: 28 students (out of 30 enrolled) took the midterm and the average score was 81. A histogram of the scores is available.

Today's Lecture

I have posted the slides for the lecture material on model-based design (chapter 8 of the concurrency textbook).

Have a great Spring Break!

Three Lectures Posted

I have (finally) posted the slides for lectures 13, 17, 18, and 19. For those of you keep track at home, lecture 14 was the review for the midterm, lecture 15 was the midterm itself, and lecture 16 was used to discuss the midterm. So, the Lectures page is now current.

No Office Hours on Monday

I have a meeting on Monday that takes me out to Denver and, as a result, I won't be able to hold office hours that day. If you have questions, contact me via e-mail.

Update to Project 2

As promised, I have extended the due date for project 2 to Tuesday, April 1st. (the Tuesday after Spring Break). Don't let this change in due dates break your momentum however... realistically you can not plan for too much work to occur over Spring Break, so dropping things now and then trying to pick back up after Spring Break is not a plan for success!

Given this change, the design portion of the project will probably be due on Thursday, April 10th and the first implementation portion of the assignment will be due on Thursday, April 24th. That will leave time for one additional iteration on the implementation that will be due during Finals week. That due date will be flexible and will be set when the team has set an appointment with me to show me the software prototype they have created and hand in their final project documents.

Need Short Project Summary

Hi. I'd like to describe the topics of each of the semester projects in this class on the projects page. Would one person on each team, please condense your project proposal down to a high-level paragraph (or two) that describes the application domain of your project and what you are trying to accomplish by the end of the semester. Be sure to highlight the concurrent aspects of your application domain in the description. Thanks.

Review 8

Review 8 is now available. Sorry for the delay: I've pushed the due date to Monday to compensate.

Project 2

The second part of the semester project is now available.

Goal: Create a requirements specification for your project.

Due Date: Thursday of the 10th week of class, March 20th.

Update to Grades: Midterm Grades are now Posted

I have updated the grades page to include grades for Review 7, Project 1, and the Midterm. For in-class students, be sure to total the points you received on the midterm and make sure that your score matches up with my score on-line.

Another Change in Plans

Turns out the meeting that was supposed to happen today at 1 PM happened yesterday. So, I will have office hours today at my normal time: 1 PM to 1:45 PM.

Midterm Results

24 students took the midterm yesterday. The maximum score achieved was 100 points out of 100. The minimum score was 53. The average score was 79.8 with the median score being 78.5. The most common score, the mode, was an 71. Finally, the standard deviation was 12.3.

I will post an update to this message after 4 more students take the midterm by the middle of next week.

Delay to Office Hours Tomorrow

Hi. I need to delay the start of office hours tomorrow for 30 minutes. I have had an important meeting come up that I have to attend. I will try to be in my office by 1:30 PM tomorrow and hold office hours for roughly 20 minutes. FYI.

Assembla Invites

If you haven't done so already, please send an invitation to make me a member of your team on assembla. My assembla login is "kenbod".

Thanks. I'm almost done grading the project proposal and will post an update to the grades page later today.

Review 7

Review 7 is now available. Take a look at it and then read the next sentence. DON'T PANIC! It has a lot of questions but you need to answer them as if you were actually taking the midterm. This means I'm not expecting long essays for each of these questions but rather concise, to-the-point answers that get at the essence of the question. The greatest mistake that students make on the midterm is wasting too much time on a small number of the short answer questions (emphasis on short). As a result, I wanted to give you the opportunity to practice answering questions in a way that will help you maximize your time while taking the test.

For each of the questions on Review 7, you should be able to come up with a cogent answer that takes only 2-3 sentences. Be brief, to the point, and attack the essence of the question with your answer. Don't supply "filler".

This is NOT a complete study guide, there are additional things you need to review for the midterm but this review should give you good insight into the types of questions that can appear on the midterm. As a bonus for working on this review, I guarantee that at least two of the questions in review 7 will appear on the midterm.

Note: This review is due on Monday at 11:55 PM. DO NOT WAIT UNTIL MONDAY TO START WORKING ON IT! Indeed, try to get it submitted by Sunday evening, so you are well on your way to preparing for the midterm by the time Monday rolls around.

Best of luck!

Slides from Last Week

Slides from lectures 11 and 12, and the two supplements: Petri Nets and Algebraic Specifications are now available.

Team Information

Thanks very much to the project teams that have sent me their membership information. I now have team information on 24 students comprising 7 project teams. That means I need information on the remaining 6 students in the class. Would the remaining 6 students please get in touch with information on their project teams?

Information on Midterm

The midterm for in-class students will be held during the 8th week of class on Tuesday, March 4.

The midterm for CAETE students needs to be taken by Tuesday, March 11th (9th week of class).

The exam is "in-class" and will be closed book, closed notes.

I will spend the Thursday lecture of week 7 (Feb. 28th) reviewing for the midterm.

For CAETE students, I'll be giving the exam to CAETE by the end of week 7. They will then send it out to the test proctor of each CAETE student. Each CAETE student should make arrangements with their test proctor to take the exam by March 11th. The proctor then needs to put your exam in the mail to me (with a postmark of March 11th) using the following address:

Prof. Kenneth M. Anderson
University of Colorado
Department of Computer Science
430 UCB
Boulder CO 80309-0430

Any questions? Send them to Prof. Anderson.

Project 1

The first assignment for the semester project is now available.

Review 6

Review 6 is now available. As with last week, its due date has been pushed back to Sunday as opposed to Saturday.

Grades for Review 5

I've posted the grades for review 5. The grader and I are noticing a definite decline in the number of students doing the reviews. We have 30 students in the class. We received 24 submissions for Review 4 and only 18 submissions for review 5. Don't let these reviews slip by! They can certainly help your grade if you do well; they can also hurt your grade if you let them slide.

Lectures 09 and 10

The slides that I covered during lectures 09 and 10 are now available. The slides on software requirements that I covered at the end of lecture 10 are available here.

Review 5

Review 5 is now available. Since I posted this one day later than normal, this review is due on Sunday not Saturday.

Grades for Homework 1

I have posted homework 1 grades on the Grades page of this website. At the same time, the grader has posted feedback on your assignments on the moodle. Average score so far (CAETE students have not submitted their assignments yet): 26.

Lecture 08

Lecture 8 and its associated code examples are now available on the Lectures page. Note: I didn't explicitly cover this example code during lecture. The code provided is a simplified version of the Java applet that I did cover, written in the style of the code examples released for Lecture 7. They demonstrate two threads accessing a shared variable. In one program, the variable is unprotected and interference occurs. In the other, the variable is protected by a synchronized method and the interference is eliminated.

Be sure to look at these code examples... run them and make sure you understand them, and how they relate to the FSP models covered in lecture.

Homework 2

Homework 2 is now available. It will be due next Thursday the 21st for in-class students and Thursday the 28th for CAETE students.

Review 4

Review 4 is now available.

Lecture 7

Lecture 7 and its associated code examples (in Java) are now available.

Update to Review 3

A student pointed out that there was a typo in question 3 of review 3. The text on static and dynamic models appears in section 2.3 of the textbook, not 2.4. The review has now been updated to point to the correct section in the textbook. Thanks!

Lectures 5 and 6

The lecture materials that I used this week are now available on the Lectures page.

Clarification on Problem 2 of Homework 1

Problem 2 of the current homework assignment asks you to model a variable using a FSP process and gives an example trace of such a system. Last year, some students working on this problem thought that they needed to write an FSP specification that generated the output of the provided trace. That is not the case... you want to create a process specification that models the semantics of a variable, which loosely stated is: when I perform a read on the variable, I get the value that was last written to the variable.

Hope this helps, and send me e-mail if it doesn't!

Slashdot Process Notation Discussion

In today's lecture, I mentioned an article that appeared on slashdot yesterday that talks about software process notations, whether its good to document software processes, and the like. Click the link in the previous sentence to read that discussion and gain some insight into the current attitudes towards software process and software process improvement.

Upcoming Reading Assignments

We will finish chapter 2 in the SE textbook this week and move on to chapters 3 and 4 of the Concurrency textbook next week. Then in Week 5 of the semester, we'll return to the SE textbook and cover chapter 3. Week 6 will cover chapter 4 of the SE textbook and we'll then return to the concurrency textbook and cover Chapter 5 on the Tuesday of Week 7. The thursday lecture of week 7 will be devoted to preparing for the midterm, which will be held on the tuesday of Week 8.

Please use this information to stay up on the reading for this class. If you have any questions, let me know!

Review 3

Review 3 is now available.


I've uploaded the first set of grades for Review 1. As you will see, if I have a nickname for a student then I use it. If I don't have a nickname, I've assigned one in the form "nick##". This approach lets you see how all students in the class are doing. For reviews, a grade of "-" can mean one of three things:

  1. Assignment not submitted: You forgot to turn the review in by the deadline.
  2. Assignment not yet received: Used for CAETE students who have deadlines that are one week delayed.
  3. Assignment was of poor quality: You submitted the assignment but had problems with your answers.

If you haven't given me a nickname yet, just call my office number and leave a voice mail message for me containing your choice. I'll then update my records and repost the grades with your nickname filled in.

Lecture 4

Lecture 4 is now available.

Lecture 3

Lecture 3 is now available.

Homework 1

Homework 1 is now available.

Review 2

Review 2 is now available.

Lecture 2.5

The No Silver Bullet lecture that I gave yesterday is now available on the Lectures page.

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 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

Availability of Lectures

I've been getting LOTS of requests from in-class students to have permission to view lectures on-line (and thereby skip attending class in person). While I agree that it would certainly be more convenient for individuals, I think it hurts the class. You need to attend class and participate: ask me questions, engage in discussions, read the book and come to lecture with specific questions about that material, etc. An active classroom will make the overall course more interesting for you, for me, and the rest of the students.

Having said that, its NOT possible to view the lectures of this class on-line in the first place. We are not using Tegrity to record the lectures for this class because I prepare/present my lectures on a Mac, and Tegrity's software doesn't play nice on MacOS X. As a result, all CAETE students are registered as DVD only, and receive DVDs of week 1's lectures in week 2, week 2's lectures in week 3, etc. However, CAETE does make a copy of these DVDs available to in-class students at the Math Library. So, if you miss a lecture, you can go to the Math Library, check out the DVD for that lecture, view it at the library, and then return it.

CAETE is looking for lecture capture software that works with MacOS X, so this situation may change later in the semester. If so, I'll revisit this issue at that time.

Reading Schedule

Next week, I'm planning on covering chapters 1 and 2 of the Concurrency textbook in lectures 3 and 4. Then, for lectures 5 and 6, I'll be switching back to the SE textbook and will cover chapters 2 and 3. FYI. 

Lecture 2

Lecture 2 is now available on the Lectures page. I will wrap up what I didn't finish today on Tuesday before giving a lecture on Chapter 1 of the Concurrency book.

Slight Change to Office Hours

I have updated my personal home page to reflect that office hours on Thursdays will run from 1 PM to 1:45 PM. Since lecture starts at 2 PM, I have to give myself time to walk down to the CAETE studios! :-)

Course Smart Option for Pfleeger/Atlee Textbook

For those students who don't want to purchase a physical copy of the Pfleeger/Atlee textbook, there is an option to "subscribe" to a copy of it on-line at CourseSmart.com for 180 days for $55. Thanks to John Kelley for this pointer. He also points out that SafariBooksOnline.com is another good site for access to technical books on-line. He notes, however, that neither currently carry our concurrency textbook.

Lecture 1

Lecture 1 is now available.

Review 1

Review 1 is now available.

Team Formation Forum created on Moodle

I have created a forum on the moodle to allow students a place to coordinate the creation of teams. All students will be initially subscribed to this forum. You can unsubscribe from its messages once you have been successful in forming a team.

The group project will start in roughly the sixth week of the semester, so we have some time before teams need to be created. But, there is no time like the present!

To add a post to the team formation forum, simply log in to the moodle, click on the link that says "Team Formation Forum" and then reply to the initial post in that forum (which simply contains text describing the purpose of the forum).

If you have any questions about using the forum, or team formation in general, send me e-mail.


Syllabus Statements

Each semester the University asks that each faculty member make a few general announcements regarding University policies on such topics as students with disabilities, sexual harassment, the honor code, etc. These announcements have been posted on this website. Please read them!

Getting Ready...

As you can see, I have started working on the website for this semester's course on the Foundations of Software Engineering. Stay tuned for updates and I'll see you next Tuesday!

Kenneth M. Anderson, 2008.