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.
What's New
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.
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.
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
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.
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.
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.)
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
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
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:
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:
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>
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.
- When there is single processor, multiple threads, then its simulated parallelism.
Yes, there is concurrency but there is not true parallelism.
- 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.
- 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.
- 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.
- 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.
- 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.
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.
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?
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).
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
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.
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.
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
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.
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.