What's New

Return to this page for the latest information on CSCI 4448/5448. Subscribe to this site's RSS feed to have the most recent news and announcements appear automatically in your feed reader.

Final Grades

I have finished grading and have performed one last refresh of the Grades page. I will submit grades to the registrar's office later this afternoon. Have a great summer!

Update on Evaluation

After trying various schemes—none of them satisfying—I have come to the conclusion that I have no objective way to measure class participation. As a result, I have eliminated “class participation” as a category of evaluation for the class and have rolled the 5% it was worth into the homework category. I have updated the Evaluation page to reflect this change. I should be done with grading shortly and will update the Grades page by this afternoon.

Homework 8 Grades

Whoops, I lied. The Grades page has been updated to show the grades for Homework 8. The grader graded this one, so please contact her if you have questions about your score. Most students received 25 points on this assignment. Those that didn't receive 25 either turned it in late, had a less than stellar class diagram, or didn't turn the assignment in at all.

New Presentations

I have uploaded all of the graduate student presentations mentioned during the last lecture. I'm now working on grading Homework 9. I expect to be updating the Grades page sometime tomorrow. (My grading software has to be refactored to handle the differences between undergraduates and graduate students now that the presentation assignment has been graded.)

Internship Opportunity: bConnected 

I was asked by one of our students to publicize an internship opportunity with the company he is working for.

Who We Are: bConnected

bConnected™ is the software engineering arm of Connextions™ currently based out of Louisville, Colorado (will be moving to Broomfield/Flatirons area Fall ’11). We focus on developing software used by a number of primary health insurance companies across the United States. With new healthcare laws, we are looking for new innovative, approaches to improve healthcare services for the healthcare providers and the public via exchanges and other projects.

Check out our API documentation: http://bconnected.connextions.com/docs/api/

You can also check out our parent company: http://connextions.com/

The Area: Web Development

The development team is seeking Intern Web Developers with a strong web 2.0 expertise. You will be a key participant through all phases of the development lifecycle including design, development and delivery and should have some history in building end-user web applications.

To be successful at this position, you must be creative and possess excellent team skills while working in a fast paced, collaborative environment. This job requires you to be a self-starter, take ownership, work under pressure and manage multiple, concurrent tasks while still having fun.

Demo Scheduling

I've posted a Demo Schedule page to show times when I'm available for demos on Friday. (For times before Friday, send me e-mail...) I've also posted those demos that are already scheduled.

Demos will be 15 minutes long and will be held in ECCS 127A. Take a look at the Demo Schedule page for directions to ECCS 127A. (It is located directly across from the CSEL.) Be sure to practice your demo so you can be sure to fit it all within 15 minutes. Thanks!

Lecture 28

The slides and sample code for Lecture 28 are now available. See you tomorrow!

Even More Presentations

10 new presentations have been added to the Presentations page: Hadoop, JPA, Processing, and more. Enjoy!


If you are a CAETE student taking this class, you should have received an e-mail message asking you to fill out FCQs on-line; I just wanted to follow-up and say "please do so"!!! Thanks!

Homework 9 Updated

Homework 9 has been updated to clarify when the report is due. You can either turn it in when you do your demo or you can submit it by 11:59 PM on Friday, April 29th.

Lecture 27

The slides for Lecture 27 are now available.

Homework 6 Grades

The Grades page now shows the grades for Homework 6. If you have questions about your score, contact the grader first for an explanation of your point breakdown.

More Presentations

The Presentations page has been updated with more interesting presentations on OO-related topics such as the Qt framework, domain-driven design, C#, the Haiku operating system (BeOS is Dead! Long Live BeOS!), and more. Enjoy!

Homework 9

Homework 9 is now available.

OutTurn CU

As mentioned at the start of lecture yesterday, a recruiting event called OutTurn CU is being held next week on Thursday, April 21st from 5 to 7:30 PM at Snarkplace, located at 10th & Pearl. You can register for the event on eventbrite.com. For more information, you can send a message to becca@outturncu.com and stephanie@outturncu.com. The 12 start-up companies that will be making presentations at this event are looking for students to join internships in the areas of software development, media design, social networking, and business development. They are looking for creative developers and designers with the desire to learn new things and who have exposure to at least one of the following languages: Java, Perl, PHP, HTML and CSS.

Lecture 26

The slides and sample code for Lecture 26 are now available.


As I grade the presentations submitted by the graduate students, I'll be posting them to the Presentations page. At the time of this writing, we have six presentations available on topics like Java Annotations, Javascript, and concurrency in multiple OO languages. Enjoy!

Lecture 25

The slides and sample code for Lecture 25 are now available.

Homework 7 Grades

I finished grading Homework 7 (the grader is still working on Homework 6); see the Grades page for details. I'm very excited by the work being done on the projects, there should be some fun demos by the end of the semester! Most students received 25 points on this assignment. Those who received 23 points submitted the assignment late. Those who received 21 points failed to include a class diagram as requested by the problem statement. Let me know if you have any questions. I'm going to start working on the graduate student presentations next.

Lecture 24

The slides and sample code from Lecture 24 (last Thursday's lecture) are now available.

Homework 8

Homework 8 is now available. As advertised, it is the same as Homework 7 although it now includes a question about the use of design patterns within the prototypes you are developing.

Lecture 23

The slides and sample code for Lecture 23 are now available.


The predicated grades are estimates. They are indicators but not the final grade by any means. For instance, undergraduates have had lower averages on all assignments than the graduate students. Currently, the algorithm making the predications is not taking that difference into account.

Please pick up your Midterms

I heard from Emily Komendera in ECOT 725 that many students STILL have not picked up their midterms. How is that possible? When I was an undergraduate, I would pick up my midterm as soon as it was available! <old-geezer-mode>And, I would walk to school, in the snow, uphill, both ways!!</old-geezer-mode> If you have not picked up your midterm yet, please bring yourself and your id to ECOT 725 and pick up your exam. Emily will hold the exams for one more week and then recycle the remaining exams.

Predicted Grades

The Grades page has been updated to give you a sense for your predicted grade in the class. Currently, the prediction assumes (for all students) that homeworks are worth 70% of your grade and the midterm is worth 30% of your grade. After I grade the graduate presentation, this predication will make a distinction between undergraduates and graduate students, and, for the latter, homeworks will be worth 40% of the grade, the midterm will be 30% and the graduate presentation will be 30%. Finally, at the end of the semester, I will determine class participation grades and the final percentages will reflect the totals advertised on the Evaluation page.

Homework 7

Homework 7 is now available. As advertised, I'm asking for a progress report on the work you have achieved this week on implementing your project.

Grades for Homework 5

Grades for Homework 5 are available on the Grades page. Send mail to the grader if you have questions about your point breakdown for the assignment.

Another UI MockUp Tool

A student sent me a link to another UI Mockup Tool for iOS appropriately called MockApp. See videos of it in action here.

Preview of Homework 7

My day has been consumed by meetings and so I haven't had a chance to create the Assignment 7 problem statement yet. It will show up this weekend. However, in the meantime, you don't have to be delayed. The assignment will ask you to start building the system you've been designing in Homeworks 5 and 6. We're going to switch to a format in what you submit is essentially a "progress report" on what you got done for the previous week. So, select what features you'd like to implement first and get to work. As a guide, each team member should have one or two clear things they should be working on to help produce an initial prototype (note: not a full-featured prototype) by next Friday. More details this weekend.

Lectures 21 and 22

Slides for Lecture 21 and Lecture 22 are now available.

Grades for Homework 4

The Grades page has been updated with information about Homework 4. Some submissions had files that could not be opened by the grader. She will be contacting those students to try to resolve the problem. For those students, we'll update your grades once those problems have been resolved. Contact the grader to receive your point breakdown for the assignment.

Lecture 20

Slides for Lecture 20 and Sample Code for Lecture 20 are now available. Sorry for the delay in getting these posted.

Domino Award

2010 Domino Award: Entries Due Friday, April 8

Computer Scientists Setting Big Things In Motion

One Thing Leads to Another...

Throughout history our greatest achievements have started with one small act that set in motion profound change.

  • Like Dominos:
  • One domino tips and sets off a large, complex topple
  • Small dominos can tip larger dominos, and each domino falls with massively more energy than the previous domino.

The Domino Award

Inspire students to “think big” by seeing how computer scientists have significantly impacted modern society.

  • $500 cash award.
  • Meet influential technologists from around Colorado and the US.
  • Get free pizza (now we’re talking).

All participants receive a commemorative Domino and join an online “Topple” where people work together to Set Big Things in Motion. This award was started in 2002 by Herb Morreale (CS alum 1991) and Professor Clayton Lewis. It is supported in-part by Topplers, a local non-profit with a mission to inspire, motivate, and educate people to start as many topples as they can!

How to Enter

  • Write a 500-800 word essay honoring someone from the field of computer science. Essays will be judged for their ability to clearly communicate how the honoree’s work set in motion a “series of dominos” that changed the world.
  • Send your essay to Clayton Lewis <clayton.lewis@colorado.edu> by 5PM April 8.

Questions? Email clayton.lewis@colorado.edu or 2010 winner Douglas J Stillings <Douglas.Stillings@Colorado.EDU>

Additional Mockup Tools

Another student shared a link to more mockup tools, this time focusing on free mockup tools for web and mobile apps especially for those who use Linux.


A student pointed me to CogTool, a website that bills itself as a "general purpose UI prototyping tool". Check it out, as it may be useful for creating the UI mock-ups requested for Homework 6. Just to be clear, CogTool is NOT required but, if you find it useful, by all means use it!

Lecture 19

The slides and sample code for Lecture 19 are now available. See you soon!

Homework 6

Homework 6 is now available.

Picking Up Midterms

Quick Update: Exams for in-class students can be picked up from Emily Komendera in ECOT 725. Bring your id to pick up your exam.

Midterm Results

The Grades page has been updated with information about the midterm. 100 students took the test. The lowest score was a 26. The highest score was a 98. The average score was an 81. The most common score (the mode) was an 88. The standard deviation was 14. The grades page also shows the average score broken down for graduate students and undergraduates. For CAETE students, I will give your midterms back to CAETE on Monday morning. They will then deliver them to you. For IN-CLASS students, I will place the exams in ECOT 717 on Monday morning. Swing by that office with your student id to pick up your exam. I will answer questions about the grading of the exam at office hours on Tuesday.

Homework 3 Grades

The Grades page has been updated with information about Homework 3. As always, contact the grader to get more information about your scores.

Remembering the UML Notation for aggregation and composition

A student sent me this mnemonic device for remembering the UML notation for aggregation and composition. Enjoy:

Composition: first letter is 'c', which I associate with carbon and carbon is black.

Aggregation: first letter is 'a', which I associate with air and air is transparent.

Review of Midterm

I will be reviewing the midterm tomorrow in lecture BUT I won't be handing back the midterms until next week. I've graded half of the midterms and I estimate that I need an additional 6 hours of grading to get all of the exams finished.

Lecture 17

The slides for Lecture 17 and its sample code are now available.

Office Hours: Moved to Thursday

Apologies but I need to move my office hours from today at 3:30 to 4:30 PM to Thursday from 2:00 PM to 3:00 PM. I have a meeting after class today from 2 PM to 3:15 PM and then an off-campus meeting at 4:00 PM, so I'm unable to squeeze in office hours today.

Follow Up to Android Workshop

Quick follow-up to my previous post on the Android Workshop: If you plan on attending the workshop, please register. This will allow CSUAC to order the right amount of pizza for the event. Thanks!

Android Workshop

As mentioned in lecture, Buck Heroux has volunteered to present an Android development workshop outside of class. You will be building a useful Android App from the ground up. This will demonstrate the workflow of an Android application and will harness some other useful web technologies such as OAUTH and JSON. By the end, everyone will have built an Android-based Twitter client that they can load onto a phone and add to a resumé. 

Buck is teaming up with the CS Undergraduate Advisory Committee for this event, so there will be free pizza available!

This event will be held on Thursday, March 10th from 5 PM to 9 PM in Business 203. Come out and improve your Android development skills!

Startups 2 Students

Here is a pointer to more information about the startups2students event that I mentioned today in lecture, hosted by the CS Undergraduate Advisory Committee. It will be held next Friday, March 11th from 5 PM to 8 PM in DLC 1B70. This is a great opportunity to network with Boulder's start-up community (and get free food). All of the start-ups at the event have internship and employment opportunities available, so bring your resumé!

Homework 5

Homework 5 is now available.

Lecture 16: Sample Code

The code for the examples I showed during Lecture 16 is now available. Just a reminder: the ProjectEPICFilters code will not work on your machine due to the fact that the "epic-vm2" host is a research machine that is not publicly available. Consider that code a template in which you can change the URL to some other web service that provides JSON (see developer.twitter.com for examples) and then modify the JSON parsing code to make the code work for some other web service.

Lecture 16

Lecture 16 is now available.

Reminder: Form Teams and Send a Project Idea

So far I have registered 38 project teams for the class. I have 9 students who have not yet joined a team. Please do so ASAP. Use the class mailing list if you need to locate partners and/or existing project teams to join. I have several single-person teams in which the person was actively searching for partners and no one responded.

Of the 38 project teams, 8 of them still haven't contacted me with a project idea. Do so by the end of this week.


Upgraded Grades Page

The grades page now shows the average score for each assignment broken down by Undergraduate and Graduate student scores.

Android Lecture on Thursday

We will have a lecture on Android this thursday and NOT, as advertised, a review of the midterm. The reason for this is that CAETE students will be taking the midterm with their test proctors throughout the week and so I can't discuss the test until I have all six exams from the CAETE students in my hands. So, we will discuss the midterm NEXT thursday and in the meantime I will present lectures on intermediate Android and iOS.

CAETE Students Need to Use a Test Proctor

I've had several CAETE students contact me to ask if they can take the exam in-class on Tuesday. The problem with that is that I have 94 seats in that room and 94 in-class students enrolled. As a result, there won't be any room for CAETE students in the classroom on Tuesday and so I will need you to take the exam via a test proctor.

The Midterm for CAETE Students

If you are a CAETE student, make sure that you have arranged with CAETE to have a test proctor (I think they refer to them as "EO"s) give you the test. I will be giving CAETE the midterm by Monday afternoon, they will then forward the test to your test proctor by Tuesday morning. You will then have up to one week to arrange to meet with the proctor to take the test. Your test proctor will need to scan your exam and e-mail it to me by Tuesday, March 8th. Let me know if you have any questions.

Grades for Homework 2

The Grades page has been updated to include information on Homework 2. Contact the grader for details on the score you received.

Team Info

You need to join a team by Friday for the semester project. You can use the class mailing list to facilitate team formation... there have been several great project ideas posted on that list already. I need to know the members of your team by Friday. You then have until Monday to come up with a project idea for my review.

Select Your Presentation Topic Soon

13 of the 45 graduate students registered for the class still need to send me a topic for their presentation. Topics are due to me by Friday.

Lecture 13

Lecture 13 and its associated sample code is now available.

Multiple Instances of Activities

A student pointed me at the following URL that shows that the instantiation behavior of Android activities can be customized in an application's Android manifest file:


More information can be found here:


Finally, here is documentation on the startActivityIfNeeded method that was mentioned by a student in lecture:


It appears that there is a lot of flexibility built into Android for customizing the behaviors associated with starting activities!

Studying for the Midterm

If you want to get started early on studying for the midterm, you should know that all content from lectures 1-13 and chapters 1-11 of the textbook can appear on the textbook. However, I will emphasize content from lectures 1-9 and the textbook more than the content in lectures 10-13. (You should be familiar with the latter but really know the former.) Look at the homeworks for examples of the types of problems that will appear:

  • Memorization of important terms and concepts such as polymorphism, inheritance, code to an interface, abstraction, encapsulation, etc.
  • Ability to apply the important concepts when answering “short answer” questions such as those found in the homeworks.
  • Ability to draw UML diagrams based on textual descriptions: UML notation introduced over several of the lectures during the first few weeks of class.
  • Abiliity to demonsrate undrestanding of the design patterns that have been covered and to apply knowlege of them to example problems.
  • Abiliity to construct a use case from requirements and a task description and to convert that use case to an activity diagram or sequence diagram.
  • This list is not exhaustive and shouldn't come as a surprise as they reference the primary things we've been learning about this semester!

Homework 4

Homework 4 is now available. Associated with this assignment are two movies and one .zip file containing a program written in Java... all of these extra files can be viewed at the Sample Code page of this website.

Homework 4 Delayed

I was minutes from being able to release Homework 4 and I made a mistake and lost a bunch of source code that I spent the entire morning creating. I know have to start from scratch and, as a result, I'm not going to be able to release Homework 4 until late tonight or early tomorrow. As a result, I will delay the due date of Homework 4 next week. Stay tuned.

Lecture 12

Lecture 12 is now available. Sample Code featuring the object-oriented and non-object-oriented versions of the Hello World program is also available.

Lecture 11

Lecture 11 is now available. Sample code for Lecture 11 is also available.

Android Resources

A student sent me this link to provide additional information on getting Android installed. If you know of other Android-related resources, send them to me and I'll update this post with pointers. Thanks.

Installing Android

In prep for this week's lecture and a future homework assignment, you will need to get Android installed on a machine that you have access to. I worked my way through the steps to install Android at the beginning of the semester and here are the (minimum) steps you need to follow to get ready.

  1. Verify that you have the JDK installed. I have:

    java version "1.6.0_22"
    Java(TM) SE Runtime Environment (build 1.6.0_22-b04-307-10M3261)
    Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-307, mixed mode)

    but these tools should be able to work on a range of JDK versions.

    To verify that you hava Java installed, open up a command-line terminal on your machine and enter the following command:

    “java --version”

    If you do not have Java installed, go to http://www.java.com/en/download/index.jsp to download it and follow the instructions to get it installed.

  2. Download the Eclipse IDE for Java EE Developers at <http://www.eclipse.org/downloads>. On Mac, double click the .tar.gz file and then move the resulting eclipse folder into your /Applications folder. You can then drag the icon for the Eclipse environment to the Dock. On other platforms, follow the instructions provided by the Eclipse Foundation.

  3. Download Android SDK at <http://developer.android.com/sdk/index.html>. I downloaded the file android-sdk_r08-mac_86.zip for MacOS X. You will need to download the file appropriate to the platform that you have access to. Unpack the archive that you downloaded and move it to a location in your home directory. I will now refer to that location as $ANDROID.

  4. Download a version of the Android platform. To do this, from the command line, execute the following command:


    In the resulting application, click on Available packages to download an Android platform. I downloaded and installed the following packages:

    Android SDK platform tools, revision 1
    Documentation for Android SDK, API 9, revision 1
    SDK Platform Android 2.3, API 9, revision 1
    Samples for SDK API 9, revision 1
    Google APIs, Android API 9, revision 1

    Note: I do not intend to cover the recently released Android 3.0 platform. However, an enterprising group of students could decide to explore that platform for their semester project or an enterprising graduate student could decide to make Android 3.0 the topic of their presentation. (Hint, hint.)

  5. Install the Android plug-in for Eclipse by following the instructions at <http://developer.android.com/sdk/eclipse-adt.html>

  6. Configure the Android plug-in using the instructions labelled “Configuring the ADT Plugin” on the page listed above in step 5.

  7. There is no step 7.

Let me know if you have any questions.

Semester Project

Details on the Semester Project are now available.


Details of the presentation that graduate students must create for this class are now available.

Update to Homework 1 Grades

As anticipated, the students who received "Not Submitted" grades on Homework 1 got back to me and I tracked down those cases where the grader had missed that a particular submission was a group effort. I've now updated the Grades page to display the correct scores for those students affected by this situation.

No Homework This Week

Note: Despite what I said in lecture this week, I've decided to hold off on assigning a new homework for one more week to give the grader a chance to get through Homework 2. So, enjoy your weekend!

Homework 1 Grades

The grades for Homework 1 are now available on the Grades page. See the previous What's New post to learn how to calculate your id. I will be discussing the assignment on Tuesday and will be releasing examples of excellent student work to show you what we were looking for while grading the assignment. You will not be receiving individual feedback on your assignment from the grader, although we do have records of what points were deducted from each submitted assignment. If you have questions about what points you missed, you can contact the grader. I will be sending her e-mail address to each enrolled student in just a few minutes.

Your Id

To see your grades on this website (grades for Homework 1 will be published later today), you first need to calculate the id I'm using to represent you. To do this, start with your student id, take out the hyphens and finally write down the last five digits of the resulting number. If the first digit of the resulting number is zero, drop it.

Example 1: Assume your student number is 555-65-4321. After following the instructions above, you would be left with the number 54321.

Example 2: Assume your student number is 555-60-1234. After following the instructions above, you would be left with the number 1234.

Now, take your last name, make it lower case, and cycle through its characters. Assume that 'a' is mapped to 1, 'b' to 2, ..., and 'z' is mapped to 26. For this class, there are two special characters. A space character maps to -64 and a hyphen maps to -51. Map each character in your last name to its value and add up all the values to calculate a sum. Add this sum to the number above to calculate your id.

Lecture 10

The slides and the sample code for Lecture 10 are now available.

Tech Event: Unlocking the Secrets of Git

A student in our class thought that others might be intersted in this upcoming event.

The February Boulder Linux User Group meeting is coming up.

  Talk : Unlocking the Secrets of Git

Speaker : Tom Preston-Werner

  When : 7 p.m. on Thu, Feb 10, 2011

 Where : Aztek Networks, 2477 55th St, Suite 202, Boulder, CO.

         Aztek Networks is on 55th between Arapahoe and Pearl, just
         north of the Humane Society.  There's plenty of parking, and
         the 206 and 208 busses stop across the street.

   Map : http://lug.boulder.co.us/meetings.html

Summary of 'Unlocking the Secrets of Git'

Everyone knows that Git is the tremendously powerful distributed
version control system created by Linus Torvalds, but did you know
that Git is really just a userland file system with some extra goodies
to make it work for version control? This secret life of Git allows us
to do some insanely great things. In this talk I'll show you how Git
works under the covers and give you a taste of what's possible when
you understand the magic within.

Pre meeting food

Please join us informally for a bite to eat at Panera Bread before the
meeting, around 5:30 P.M.  Panera is in the 29th street mall, east of
Highway 36/28th street near Walnut.

Sample Code for Lecture 9

The sample code discussed during Lecture 9 is now available.

Update to Lecture 9

I've updated the slides for Lecture 9 to contain the "quiz" I stuck at the front of lecture and my answer to applying the strategy pattern to the Bank Account question.

Lecture 9

The slides for Lecture 9 are now available.

No Office Hours Tomorrow; Moved to Thursday

I can't meet during my regularly scheduled office hours tomorrow. As a result, for this week only, I will hold office hours after class on Thursday from 1:45 PM to 3:00 PM.

Sample Code for Lecture 6

The source code for SimUDuck from Lecture 6 is now available. As a bonus, I present the example in both java and python.

Lecture 8

The slides for Lecture 8 are now available.

Today's Slides

The slides for Lecture 8 will be released after lecture today. I've got a question or two for you this lecture that would be less effective if you had the answers on the next slide! See you soon...

Referring to Objects in Sequence Diagrams

If you find yourself needing to reference an object in your sequence diagram, you can name the object and then include the name in subsequent method calls. Thus, imagine you are in a situation in which a Camera object has just created a Photo object and you now need to store that photo in an Album. In your sequence diagram, you can show the Camera object creating another object whose name is "p1: Photo". Then, when you show the main program calling addPhoto() on the Album object, you can instead say addPhoto(p1). This more clearly shows that you are making use of objects created in the sequence diagram in subsequent method calls on other objects. Hope this helps!

Sample Code from Lecture 7

The sample code discussed during Lecture 7 is now available.

Updated Slides for Lecture 7

I have uploaded an updated set of slides for Lecture 7 that contain the changes I made to it just before lecture started. If you had previously downloaded the slides for yesterday's lecture, then please download them again.

Lecture 7

Lecture 7 is now available.

One more Update to Assignment 3

I have updated the text of assignment 3 to clarify the new requirement. It used to say:

The system allows pet owners to create profiles for each dog that they own and then record multiple sounds of those dogs to be associated with their profiles.

It now says:

The system allows pet owners to create a profile for each dog that they own and then record one or more sounds of a dog to be associated with its profile.

The intent is that there is one profile per dog. A profile can have zero or more sounds of that dog associated with it.

Sorry for the changes… this is just another data point that creating/specifying clear requirements is HARD!!

Hand-Drawn Figures

I received a question about whether students could hand draw the figures for Homework 3 and then scan them in, convert them to PDF and then submit them. Short answer: "Yes".

Update to Assignment 3

There was a typo in bullet 5 of the original Assignment 3. It used to say:

5. Identify an activty or set of activities in your use case and create a sequence diagram that shows how objects in the system handle those activities.

It now says:

5. Identify an activity or set of activities in your activity diagram and create a sequence diagram that shows how objects in the system behave when those activities are active. Note: you need to pick a set of activities that allows you to create a non-trivial sequence diagram. (I don't want to see a sequence diagram with just two objects and a single call between them!) Be sure to indicate what activities the sequence diagram is covering.

The point is that in step 4, you are asked to create an activity diagram that models the use case that you created. Now select a subset of those activities to model in the sequence diagram. Just be sure to pick a large enough “chunk” to ensure that you can create an interesting sequence diagram.

Let me know if you have any questions.

Homework 3

Homework 3 is now available.

The Fido Example

Yesterday, during lecture, I intended to work my way through an example of the iterative process of analysis and design that I discussed while closing out the slides for Lecture 5. I got distracted with having to switch over to the slides for Lecture 6 and completely forgot about the example. My apologies.

So, now I will present the example here and then you should be ready for Homework 3, which will be appearing on the class website soon.

Note: This example comes from the excellent book Head First Object-Oriented Analysis & Design that I've used for the past couple of years as the textbook for this class. If you are interested in software engineering and object-oriented analysis and design, I encourage you to obtain a copy of the book.

During Lecture 5, we looked at this example set of requirements.

These requirements represent the start of a conversation with a customer that would like us to build software to control an automated dog door. The dog door can be opened and closed via a remote control and it features a "bark recognizer" that allows a pet to be automatically recognized via its bark and will then open the door on behalf of the owner. Finally, the door needs to automatically close after a short delay to protect against the owners forgetting to close the door themselves.

Creating a website on the CSEL

The CSEL admin has created a FAQ on how to create a website for your CSEL account. You can follow the instructions to create your own website and then you can, for instance, upload your homework assignments to your website on the CSEL and provide me with links to them the next time an assignment is due. ☺

Submitting Homework

Please follow the guidelines I listed in Lecture 1 when submitting homework. For Homework 2, I asked you to create a single .zip or .tar archive that contains your entire assignment. The single file ensures that I keep all of your work together and makes it easy for me to pass your work over to the grader. When you send me multiple files, I have to spend time putting everything into a single archive and that just wastes my time. Those students who don't follow the guidelines for submitting homework starting next week will lose points on their assignment. Just put yourself in my shoes, imagine receiving ~75 submissions of homework 2 in your inbox and discovering that many of them require you to chase after multiple files.

For those students who followed the guidelines when submitting HW2:


Lecture 6

Lecture 6 is now available.

Reminder: Google Tech Talk

Just a quick reminder that Google and our local ACM Student Chapter is hosting a tech talk tonight at 6 PM in ECCR 1B40.

They have not provided a title or abstract but I learned today that the speaker will be Scott Green, the Engineering Site Director at Google's Boulder office.

Free pizza will be provided!

Lecture 5

Lecture 5 is now available.

Homework 2 Programs

I received the following question concerning the programs that I've asked you to write in Homework 2:

Q: For HW2, how will the programming questions be graded? Does there need to be a specific layout of what it should be or as long as it works, we get full points?
A: Your programs need to meet the functionality described and make use of the OO heuristics I've discussed so far in class. So, for instance, both programs should make use of polymorphism, follow the design heuristics discussed in lecture for OO classes, etc.

It's not just a case of reproducing the stated functionality but doing so in a way that follows the OO techniques discussed in lecture so far.

Changing my Office Hours

I've had several requests to change my office hours such that students can meet with me before the homework assignments are due. I'm happy to do so! My office hours are now on Tuesdays from 3:30 PM to 4:30 PM or by appointment. The room for my office hours remains unchanged: ECCS 111.

Google Tech Talk Next Wednesday

© Kenneth M. Anderson, 2011