What's New

Return to this page for the latest information on CSCI 5828. You can also subscribe to this site's RSS feed to have the most recent news and announcements appear automatically in your feed reader.

Project Demos

Please contact me to schedule a final demo for your semester project. Most of my Friday slots are gone, so teams who have not yet scheduled a demo should target Thursday. FYI.

Projected Grades

The Grades page has been updated with a "scores" table that displays your projected grade in the class. The projected grade is calculated using the tables I posted just after the midterm and assigning a 40% weight to the project grades and a 20% weight to all other assignment categories (as described on the Evaluation page).

Note: there are no opportunities for extra credit in this class. We've got one more assignment, Project 5, to include into these calculations before the projected grades become final.

Grades for Homework 5

The grades for homework 5 are now available on the Grades page.

Grades for Homework 4

The grades for Homework 4 are now available on the Grades page.

Lecture 28

The slides for Lecture 28 are now available. These are the slides created by Tom Smallwood for tomorrow's lecture. (Note: I created the title for the lecture... Tom may not agree with that title, so be flexible!) Be sure to attend lecture tomorrow to listen to Tom and to fill out the FCQs at the end of class. Thanks so much!

There WILL BE a Lecture on Thursday

Please plan on coming to lecture this Thursday, April 22nd. A guest lecturer, Tom Smallwood, will be there to talk about the issues encountered by real companies as they shift from a traditional approach to software development to an agile approach. In addition, after Tom's lecture, it will be time to fill out FCQs for this class. Aaron Schram will be administering the FCQs during the last 10 minutes of lecture. So, please attend the lecture to hear Tom's presentation and to submit your FCQs. Thanks! Note: I will post Tom's slides as soon as he sends them to me.

Lecture for Tuesday, April 20th

I'm still stuck in Scotland, so there will be no lecture today. Instead, you should watch the video of the lecture I gave last year close to this time. It covers the chapter in Head First Software Design called "The Next Iteration" and it is what I would have covered if I had been in Boulder today.


<Lecture 27: The Next Iteration>

Grades for P3 and P4

The grades for P3 and P4 are now available on the Grades page.

Update: I'm stuck in Scotland!

For the last week, I've been attending the Visions of Computer Science conference in Edinburgh, Scotland. On Thursday, a volcano in Iceland erupted grounding all flights in the UK for the last several days:

<http://news.bbc.co.uk/1/hi/uk/8626686.stm>

I was supposed to come home today but my flight has been cancelled and it appears I might be stuck in Scotland for the next seven days.

I previously scheduled a guest lecturer for next Thursday, so that lecture is covered. I will now work with CAETE to get a lecture prepared for Tuesday's lecture.

Stay tuned!

Grades for SE Presentations

The grades for the SE Presentations are now available on the Grades page. For the most part, the class did very well on this assignment and a nice set of presentations on a diverse set of SE-related topics. I will be able to answer questions about the grades when I return from my business trip on Monday, April 19th.

Project 4 and 5

The details on Project 4 and Project 5 are now available. My apologies for not posting the details of Project 4 until now. The major difference between the deliverable of iteration one and the deliverable of iteration two is that I'm asking for details on how you are testing your project. If you have not been writing unit or integration tests up to this point, you still have a week to start doing so. There should still be plenty of time to respond to this aspect of the assignment. Project 4 is due on Friday, April 16th. Project 5 is due by the last day of the semester.

Homeworks 4 and 5

Details on Homework 4 and Homework 5 are now available. These will be the last two homework assignments of the class.

Lecture 24

The slides for Lecture 24 are now available.

SE Presentations Graded

I have now graded all of the SE Presentations. I will post the grades later tonight. All of the presentations, save one, have been posted on the Presentations page. A homework related to these presentations will appear on the website later tonight.

REMINDER: There will be no lectures this week as I will be in Edinburgh, Scotland presenting a paper at the 2010 Visions of Computer Science conference.

Lecture 23

Lecture 23 is now available.

Lectures 21 and 22

The slides for Lecture 21 and Lecture 22 are now available.

CAETE Students: FCQs

Just a quick note for the CAETE students: Your course evaluation for this class will be held on-line. On April 16th, you'll receive an e-mail message from FCQ.Office@Colorado.EDU that contains instructions on how to access the on-line evaluation form.

Please do find some time to fill out the form!

In-class Students: You will fill out class evaluations during an upcoming lecture. I will post an announcement on this blog once I know when the forms will be available. Stay tuned.

Grades for P2

The grades for part 2 of the semester project are now available on the Grades page.

UIUC Summer School on Multicore Programming

As this touches on a number of the topics we've discussed this semester, I thought I would point students at this summer school event being hosted at UIUC:

UIUC Summer School on Multicore Programming

One of the presenters is the author of our concurrency textbook!

SE Presentations: Too big to send? Try Webfiles...

If your SE Presentation is too large to send via e-mail, you can give CU's web files service a try:

<http://www.colorado.edu/its/webfiles/index.html>

All you need is your identikey and password and you gain access to 100 MB of storage. Upload your presentation there and then set the permissions on the file such that I can download it. (Test it out yourself before sending me the link. Remember, you need to be able to download the file WITHOUT logging in.)

Lectures 19 and 20

The slides for Lecture 19 and Lecture 20 are now available.

Project 3

Details of Project 3 are now available.

Example SE Presentation

As I mentioned last week, one student, Søren Houen, has finished his SE presentation early. He did an excellent job presenting the Drupal Web Application Framework. He submitted both a screencast and a set of slides. Hopefully, Søren's submission will inspire you to similar heights of creativity! 

Lecture 18

The slides for Lecture 18 are now available.

Lecture 17

The slides for Lecture 17 are now available.

Lecture 18

Lecture 18 is going to cover additional topics related to FSP. I'm moving the lecture on Scala's agent model and chapter 5 of Breshears to next week. FYI.

Startups 2 Students

This Thursday from 6:30 PM to 8:30 PM in the DLC, there will be an event hosted by the department's undergraduates known as Startup 2 Students. The goal of this event is to put our students in touch with representatives from Boulder and Denver's local start-up community.

If you are interested, more details are located here: <http://startup2student.pbworks.com/>

We'd like to see a great turnout for this event, so please plan on attending!

Project 2: Requirements and Design

Part 2 of the Semester Project is now available on the Assignments page.

Grades for Project 1

Grades for the topic proposal portion of the Semester project are now available on the Grades page. I will be posting the second assignment for the project later today.

Midterm Grades

The grades for the midterm are now posted on the Grades page (to see them, be sure to scroll down past the Homeworks table).

Picking Up Midterms

I will be providing the exams of the five CAETE students to CAETE this afternoon. They will take care of getting the exams back to you. For in-class students, I will be dropping off the exams with Jackie in the front office, ECOT 717. You may pick up your exam from her, just bring some form of ID. I will ask her to keep the exams until the end of week 11 (the week after Spring Break) and then have her destroy them. So, if you want your exam, swing by 717 and ask politely.

I will be updating the Grades page with the results of the exam soon.

Reminder: Upcoming Due Dates

Project Proposals are due at the end of this week. SE presentation are due at the end of week 10. The assignment for the first iteration of the semester will be going up later today.

Reading for Next Week

Next week, we will cover chapter 6.5 of the Head First Software Development book and Chapter 5 of Breshears. I'll also present the concurrency model of Scala alongside the content from the Breshears textbook.

Midterm Results

I have finished grading the exams of the 30 students who took the midterm on Tuesday (25 in-class, 5 CAETE). Midterms will be handed back today at the start of lecture and we'll spend today's lecture discussing the exam.

The average score on the exam was an 85.1. The minimum score was 50. The maximum score was 102 (perfect score + 2 extra credit). The median score was 90 while the most common score (the mode) was a 91. The standard deviation was 12. Finally, here is a histogram of the scores achieved on this exam:

Histogram


Grading Scale

I will be posting the grades for the midterm later today. Your point score has been converted to a letter grade using the following table:

GradingScale

In addition, when calculating your final grade at the end of the semester, your letter grades will be converted to numerical scores using the following mapping:

Grade Score
Grade+ X8
Grade X5
Grade- X1

So, if you received a B+ on an assignment, that will be converted to an 88; a B will be converted to an 85; and a B- will be converted to an 81.

If you have any questions, let me know.

Starting Early

Since there is no class in the CAETE studio ahead of us, I'm going to hand out exams starting at 9:10 AM and will let students start on the exam at 9:15 AM. The test will end at 10:45 AM sharp because we DO have a class in the CAETE studio directly after our class session.

Finally, if you are a CAETE student who plans to take the test using a test proctor, please let me know. I think all of my CAETE students plan on attending the exam in person tomorrow. I just wanted to confirm: so if you are a CAETE student and you are NOT attending the exam in person, please send me a message. Thanks.

Chapter 6.5 of Head First Software Development

... is not on the midterm. We'll cover its material after the midterm. FYI.

Video for Lecture 14

The video for Lecture 14 is located here:

<http://engineeringonline.colorado.edu/tegrity/kena/CSCI5828101/CSCI5828L14.wmv>

Note: there are no new slides for that Lecture, so I will not be posting slides for Lecture 14 on the Lectures page.

Atom Feed of Class Lectures

To help you study for the midterm, you can access the recordings of all lectures via this Atom feed:

<http://echo360.cs.colorado.edu:8080/ess/feed?id=54b90224-5fd4-4757-8be6-8deb45be2c72&type=M4V>

Lectures 11, 12 & 13

The slides for Lecture 11, Lecture 12 and Lecture 13 are now available.

Study Guide

The study guide for the material based on the optional textbook that I promised to create during this morning's lecture is now available. I will get the slides from lectures 12 and 13 up on the website tonight. Stay tuned!

Grades for Homework 3

Grades for Homework 3 are now available on the Grades page. The grader said that everyone who submitted an assignment did a good job meeting the basic requirements. He did say that a few people made calculation errors when constructing their iteration plans... be careful, as you will lose points on the midterm if you make such mistakes on the exam.

No Homework on Optional Textbook

There will be no homework assignment on the material covered in the optional textbook. I will release questions related to that material on Monday and Tuesday that you can use to help study for the midterm.

Questions on Concurrency

A student wrote me with questions on concurrency. On the assumption that there are other students with these same questions, I've decided to share my answers with the rest of the class.

  1. When there is single processor, multiple threads, then its simulated parallelism.

    Yes, there is concurrency but there is not true parallelism.

  2. When we have multiple processors, multithreads, then there is a potential for true parallelism to occur.

    Yes, if we have multiple processors and a program using multiple threads then there is a potential for true parallelism to occur. As we've seen, it is up to the scheduler of the programming language's run-time. When I wrote a multi-threaded script in Ruby 1.9, I only received concurrency. Ruby's scheduler was not able to take advantage of the multiple processors on my laptop. However, when I wrote a multi-threaded program in Java, I received true parallelism. Java's scheduler was able to create the threads such that they ran on multiple processors at the same time.

  3. For sequential programming, we have single thread, single processor.

    Better to say: for sequential programming, we have only a single thread of control. A sequential program can be run on a computer that has multiple processors but it will only ever make use of a single processor.

  4. Whats multitasking and timesharing? Is that common for all three, I mean, multitasking and time sharing is seen in all the three cases.?  Why always the chapter starts from multitasking and proceeds to multithreading?

    I'm not quite sure I understand your question but here goes.

    Time sharing in computer systems is what I typically call simulated parallelism. The scheduler knows that it has three threads to run, so it runs thread 1 for a little bit, then runs thread 2 and then runs thread 3. Each thread makes progress over time, but only one is running at any one time.

    A task is something that a concurrent program needs to perform. In one of my example programs, the task was to read an XML file and count the number of tags within it. In that program, I created six threads to process files, one thread to read the files into memory, and one thread to send output to System.out (8 threads total). Each time the producer thread read in a file and stuck its contents on the queue, a task was created. Each time a consumer thread, pulled a file off the queue and processed it, a task was completed.

    I pointed that program at a directory that contained 40,000 XML files to process. So, when the program was running, it processed 40,000 tasks using 8 threads.

  5. How does the accuracy and performance in true parallelism differ from simulated parallelism? Can you elaborate this taking a scenario?

    This is difficult to answer. You will get better performance with true parallelism if you have lots of independent tasks being processed by multiple threads, since all of the threads can run at the same time. If you have simulated parallelism, then you can still have lots of tasks and threads but the overall program will take longer to run because only one thread can run at a time.

    The accuracy should be the same in both cases. The same code is executing, the only difference is how many threads are active at once.

  6. Last but not the least, now a days , there is dual/quad core processor with multithreading , in which case true parallelism occurs, which is also called concurrency. Right? The author refers concurrency to case 1 and 2. am I right?

    Yes, if you have a quad-core processor on your laptop, you have essentially four cpus that can be active at the same time. If you then right a program with multiple threads and those threads are assigned to the four cpus at the same time by the program's scheduler, then you get true parallelism. If the scheduler isn't set-up to handle parallelism (as is the case with ruby's scheduler) then you get simulated parallelism. Both programs would be considered a concurrent application.

Lecture 10

The slides and example code of Lecture 10 are now available on the Lectures page.

Project One

Details for the first assignment of the semester project are now available.

Wiki for Team Creation

I have created a wiki to facilitate the process of team creation. This wiki is only temporary and will be deleted once teams have been formed.

Use this wiki to post information about yourself and potential project ideas or to post requests looking for additional team members if you are already on a team that needs one or two more members.

I have placed two example entries on the wiki already... you should not take these examples seriously, but hopefully they can inspire you to write up an entry that promotes yourself, your idea or you team in a strong and powerful way, thus helping you to get snatched up and onto a project team quickly.

Teams should consist of three to four people and can be a mix of in-class and CAETE students, if you're willing and able to work with remote team members.

Details of the semester project will be posted next. 

Lecture 9

The slides and example source code for Lecture 9 are now available.

Pointer to Article on git

To try and motivate someone into developing a presentation about git, here is a link to a developer praising a feature of the git distributed configuration management system. There is a lot of interesting things that this developer says that if investigated might lead you to an interesting presentation not only on git itself but on the types of software development git enables. Any takers?

Lectures 7 and 8

Slides for Lecture 7 and Lecture 8 are now available.

Homework 3

Homework 3 is now available. Also, I added a new topic to the list of potential topics on the SE Presentation page. This new topic is to examine the Wide Finder Project by Tim Bray and to discuss it in depth, including the types of approaches people took to the problem and examining the best solutions in depth (for some definition of "best" that you can supply).

Homework 2

Grades for Homework 2 are now available on the Grades page.

SE Presentation

Details on the Software Engineering Presentation are now available. One major change: presentations are due no later than the Friday of the 10th week of the semester. The grader and I will review them and then the 10 ten presentations will be selected to be presented in class.

Change In Plans for Tomorrow's Lecture

I originally planned to cover Chapter 3 of the Breshears textbook tomorrow during Lecture 8 but I've discovered that I need more time to prepare. As such, I've decided to cover the material from Chapter 4 of the Head First Software Development textbook instead. I will present Chapter 3 of the Breshears textbook next week. My apologies for the last minute change.

Updated pi_threaded.java

I updated the pi_threaded.java script that I presented in lecture today to scale to N processors. I then ran it on my 8-core Mac desktop machine. Here are the numbers. The single threaded version ran in 17.7 seconds on the 8 core machine. As with my laptop this morning, it maxed out a single processor at 100% utilization during those 17.7 seconds. Then I ran the new version of pi_threaded.java set to make use of all 8 cores. It ran in 1.4 seconds. It executes so fast that Activity Monitor doesn't have time to report on CPU utilization. However, the output of the unix time command indicates that indeed all eight cores are maxed out during the roughly 1.4 seconds of execution:

real 0m1.437s
user 0m9.738s
sys 0m0.043s

Even though the command executed in 1.437 seconds, the CPU utilization was 9.738 meaning that each of the cores spent about 1.2 seconds working on their task. I have added the new, scalable version of pi_threaded.java to the Lectures page.

Grades Page

I've updated the Grades page to contain "submitted/not submitted" info for HW 2. I'm sending HW 2 to the grader today and I hope he'll have it graded by early next week. FYI.

Lecture 5 and 6

Slides for Lecture 5 and Lecture 6 (and its example source code) are now available on the Lectures page.

Whoops, let's try that again!

I had a bug in the code I used to generate student ids. That bug has been fixed and the Grades page refreshed to contain the correct ids. Sorry for the confusion.

Your Id

To see your grades on this website, 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.

Example 1: Assume your student number is 555-65-4321 and your last name is "Palen-Anderson". You would convert that to "palen-anderson" and start a running total: 16+1+12 + 5 + 14 - 51 + 1 + 14 + 4 + 5 + 18 + 19 + 15 + 14 = 87. Add 87 to 54321 to arrive at your final id: 54408.

Example 2: Assume your student number is 555-60-1234 and your last name is "Palen Anderson". You would convert that to "palen anderson" and start a running total: 16+1+12 + 5 + 14 - 64 + 1 + 14 + 4 + 5 + 18 + 19 + 15 + 14 = 74. Add 74 to 1234 to arrive at your final id: 1308

If you have a question about what last name I used for you, please let me know!

Grades

The grades for homework 1 are now posted on the Grades page. Stay tuned for instructions on how to calculate your id.

Homework 2

Homework 2 is now available on the Assignments page.

Slides for Lecture 3 and 4

The slides for Lecture 3 and Lecture 4 are now available on the Lectures page, along with the example source code discussed during Lecture 4.

More SE-related blogs/sites

Students have sent in the following pointers that follow up on the SE-related blogs/sites I presented in lecture today.

Paul Graham is an influential developer who maintains a blog that discusses a wide range of issues related to software engineering.

Hacker News is a tribute to minimalism as well as being a site to point at software engineering related topics.

Finally, another entry in the "Humor" category: PhD Comics

Homework 1

Homework 1 is now available.

Lecture 2

The slides for Lecture 2 are now available.

Lecture 1

The slides for Lecture 1 are now available. Don't forget to read No Silver Bullet before Lecture 2 tomorrow.

No Silver Bullet

The paper No Silver Bullet is available for students of this class to download from the Lectures section of this website. You will need a username and password to download the file. The Professor will reveal the username and password during Lecture One. If you missed that information, contact the professor via e-mail.

Assignments

A placeholder page for Class Assignments has now been added.

Evaluation

The method for determining your grade in this class has now been posted.

Textbooks

Information about the textbooks for this semester is now available.

Lectures

A placeholder for lectures has been added to the website. After class, I will post any materials presented in class to that page.

Syllabus Statements

I have added the syllabus statements that the University recommends all students see at least once a semester to the class website.

Website On-Line

I have started work on the class website for this semester. Stay tuned!

© Kenneth M. Anderson, 2010.