What's New


Final Grades

The Grades page has been updated with final grades. I'll be submitting the grades today and they should show up in MyCUInfo later next week. I hope you enjoyed the semester and I hope you all have a great summer!

P.S. Participation grades were based on attendance for in-class students and e-mail (and in some cases in-person) interactions with CAETE students and then agumented by my subjective memories of numbers of questions, visits to office hours, etc.

Lecture 30

The slides for Lecture 30 are now available. Don't forget to take Quiz 5 today! I will see you all one more time at your semester project demos!

Another Problem with Quiz 5

There's another problem question on Quiz 5: "When nested transactions occur the outer transaction is not committed until all inner transactions are committed". The answer should be False but we had it set in the moodle to be True. The grader will go through and give everyone points for this question. Sorry for the mistake!


Sample Code for Lecture 29

The sample code for the Grand Central Dispatch examples I discussed in Lecture 29 are now available.

Homework 4 Grades

The grades for Homework 4 are now available on the Grades page. As always, contact the grader to get feedback on your assignment.

Sign Up for Final Demo

Just a reminder, if you haven't done so already, be sure to sign up for a 15 minute semester project demo! I sent out an e-mail on April 25th with a URL pointing at the Doodle Poll that I'm using to schedule demos. Look for that message and get signed up.

Lecture 29

The slides for Lecture 29 are now available. This was a fun lecture to create! Lots of cool demos.

Problem with One Question on the Quiz

I have learned that I made a mistake on one of the questions on Quiz 5. The question is the following true-false question:

A Transactor that implements coordinate() is not required to implement atomically() to work in tandem with sub-actors

The correct answer is False but we set-up the quiz such that it is expecting True. So, please answer True to this question when you see it, even though the answer should be False.

For the five people who have taken the quiz so far, I went in and gave you a point back for this question. If you don't read this post before taking the quiz, and you miss this question, let me know, and I'll give you the point back.

Sorry for the problem!

SE Presentation Grades

The Grades page has been updated to reflect the grades for the SE Presentation. As I said on Thursday, "Great work, everyone!" The grades for Homework 4 should be available soon.

Lecture 27 Sample Code

The sample git repository that I created during Lecture 27 is now available. You should be able to unpack this zip archive, cd into the branch_demo folder, and try out various git commands to get a feel for using git as a version control system. Check out http://gitref.org/ for additional coverage of git-related commands.

Quiz 5

Quiz 5 is now live on the moodle. You have until Thursday of next week to take it. I'll try to remind you to take the quiz next week but put a reminder in your calendar software now to remind you to take the quiz!

Semester Project Link Now on Moodle

A link for the semester project is now on the moodle. Please upload your final project reports by the end of next week. (You should upload your project reports, even if you plan on handing the report to me at your project demo.) Also, I'm only requiring the final report, but you can also upload your code. If so, put the code and the report in an archive and upload that.

Lecture 28

The slides for Lecture 28 are here. As you may know, these slides are simply an overview of the topics contained in our wonderful set of SE presentations. Head over to the second link for the REAL content of this lecture. Thanks!

Lecture 27

The slides for Lecture 27 are now available. I'm working on the slides for Lecture 28 now and will make them available soon.

Check Your Inbox

I sent out an e-mail message to the entire class containing a pointer to a Doodle poll that will handle the scheduling of semester project demos next week. Check your inbox (or your spam folder) for the message and get signed up for a demo! Thanks!

Details on Final Report

I've posted additional details on the final report that you should submit alongside the demo of your semester project. Details on how to sign up for demos will be provided this afternoon. Stay tuned!

Senior Project Expo

I'm pleased to announce that we will be hosting an expo to display the results of our senior projects class next Tuesday, May 1st from 5 PM to 6 PM in the Engineering Lobby. Come see the results of our hardworking senior project teams and rub elbows with our invited guests from throughout Colorado's tech industry.

FCQs for In-Class Students

I will be allocating time for in-class students to fill out the FCQs for the class at the end of lecture on Thursday. Please try to attend, so you can submit feedback on the class and my performance as an instructor. Thanks!

FCQs for CAETE Students

If you are a CAETE student enrolled in 5828 for this semester, you should have received a message from fcq@colorado.edu with an access code and a link to submit feedback on my performance as an instructor as well as your feedback on the quality of this course. Please try to find time to fill out that survey! Your feedback is anonymous and important to me! Thanks.

No Office Hours Today

I will not be holding office hours today. If you have questions, please send e-mail and I'll either respond or schedule a time to meet with me early next week. Sorry for the short notice.

Lecture 26

The slides for Lecture 26 are now available.

Sample Code for Lectures 24 and 25

The sample code for Lecture 24 and Lecture 25 are now available. This includes the just the source code for my "increment" program. The remaining code can be downloaded from our concurrency textbook's website.

Lectures 24 and 25

The slides for Lecture 24 and Lecture 25 are now avaialble.

Lectures 22 and 23

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

Homework 4

Homework 4 is now available. Apologies for not getting this created last week. This assignment is due NEXT Thursday, April 19th, and is designed to get you organized for your semester project.

Grades for Quiz 4

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

CS/ECE Student Position at CU

Below find details on a student development job here at one of CU's research labs.


The Flight (Embedded) Software group at CU’s Laboratory for Atmospheric and Space Physics (LASP) is looking for a CS or ECE grad/undergrad to fill a student employment position. The project is to design, implement, and test software used on/with satellites. Will work one-on-one with professional engineers and researchers, but has more autonomy and responsibility than most internships. Kind of a neat perk is that they will write software that will end up in outer space.

Required skills: Software development in C/C++ (Embedded Systems Certificate a plus)
Desired skills:

  • Software Engineering Process (Software Engineering Certificate a plus)
  • Experience with scripting languages
  • Basic familiarity with digital hardware

The ideal candidate is a student who is at least 2 years away from graduation. The work is part-time during semesters (flexible hours) and full-time during summer breaks. LASP is located close to campus and is composed of about 20% students. Look at the employment section of our website (http://lasp.colorado.edu/employment/) for additional information and then send resumes to HRADS@lasp.colorado.edu. Include any coursework or experience you have that directly relates, as well as U.S. citizenship status. In your email subject, use the code SCSTU0412-FSW.

For additional details about the position, you can contact Greg Newcomb, who is an Electronics and Software Engineer at LASP. He can be contacted at Greg.Newcomb@lasp.colorado.edu or at 303-735-6167.


Startups2Students

I'm pleased to announce that CSUAC (one of our many active CS student groups) will be hosting the 4th annual Startups2Students event in one week on April 11th from 5 PM to 8 PM in the main conference room of the Discovery Learning Center. Startups2Students brings the CEOs, CTOs, CFOs, etc. of local tech startups to our campus to pitch their companies and to announce the employment options that they have available.

There's plenty of time set aside to network and present your resumé to company representatives, so come out and listen to the presentations of 15 local startups that between them have more than 40 positions for hire!

FCQs for CAETE Students

Just a heads-up, that FCQs for this class for CAETE students will be avaialble on-line April 20th to April 30th. If you are a CAETE student, be on the look out for a message from fcq@colorado.edu on April 20th and then please fill out the survey before April 30th. FCQs are an important part of the faculty review process here at CU. I review all student comments and the department and college review the scores I receive during my evaluations each year. Your comments/scores are important! Thanks!

For in-class students, you'll be filling out FCQ forms in class. I believe that will happen during the second to last week in the semester. When I know for sure, I'll post an announcment here.

Lecture 21

The slides for Lecture 21 are now available.

Homework 3 Grades

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

Quiz 4

Welcome back from Spring Break! Just a quick note to say that Quiz 4 will be available on the Moodle starting at 8 AM today and will be open until this Friday at 11:59 PM. Be sure to take the Quiz before it closes on Friday night.

Software Engineering Presentations

I'm currently working my way through the software engineering presentations. I have uploaded them all to this website for your viewing pleasure. Enjoy!

Lecture 20

The slides for Lecture 20 are now available.

No Office Hours Today

I have to cancel my office hours today. I have two meetings that conflict with my normal office hours of 1 to 3 PM today that I can't get out of. If you have questions send them to me via e-mail.

Lecture 19

The slides for Lecture 19 are now avaiable. The sample code for Lecture 19 is also available. You'll need to install Clojure and Akka in order to run it, however! See the lecture slides for details.

Lecture 17

The slides for Lecture 17 are now available. My apologies for not releasing them last week. I'll be working on the slides for Lecture 19 this weekend and I hope to have them posted before class on Tuesday. Note: there are no slides associated with Lecture 14 (midterm prep), Lecture 15 (midterm), and Lecture 18 (midterm review).

Semester Project

Information concerning the Semester Project is now available.

Another Nice Developer Blog

Stumbled upon another blog written by a developer who writes well. I thought I would share: Programming in the 21st Century. Enjoy!

Final Update on the Midterm

I reviewed the midterm in lecture today and handed back the exams to all students who were present. After the lecture, I stopped by the CAETE office and dropped off all exams belonging to CAETE students. CAETE will distribute those exams to you soon. I am left with four exams that I will keep in my backpack for the next two weeks. If you are one of those four students, just remind me that I have your exam the next time you see me. After two or so weeks, I will shred these remaining exams if they go unclaimed.

Adding Methods to Ruby Objects

Yesterday, during lecture, I tried (and failed) to add a method to a Ruby object.

Today, I picked up a Ruby book and learned how to add what are called singleton methods to a Ruby object.

Recall that Cucumber creates a new object called "world" to be used as the context for running all of the step definitions associated with a given scenario. At the start of each scenario, cucubmer essentially invokes code that looks like this

world = Object.new

This line gives us a default Ruby object, an instance of the Object class. The methods that represent step definitions are then added to this object. Imagine that behind the scenes, cucubmer called each of the relevant step definitions something like this: step1, step2, step3, etc.

Then, to execute a scenario, cucumber would essentially do the following:

world = Object.new
<add the step1, step2, etc. methods to world>
world.step1(args)
world.step2(args)

With that information as context, here's the method for adding a singleton method to an object in Ruby:

world1 = Object.new
world2 = Object.new

def world.hello
  puts "HELLO!"
end

world1.hello // output equals "HELLO!"
world2.hello // No Such Method exception

We have two instances of Object but only one of them (world1) has had a hello method added to it.

Now, in truth, Cucumber likely generates a class for the world object dynamically and uses a class method called define_method to add the step definition methods to the world object but the effect is the same: the step definitions become methods on the world object and the scenario is then executed by simply calling each of these methods in the correct order passing in the appropriate arguments.

Predicted Grades

I have activated a feature of the Grades page that turns each student id into a link that displays an individualized grade report for that student. That report uses the percentage weights of each category of assignment (homework, quiz, exam, etc.) to produce a predicted overall grade for the course. Currently, I have the midterm weighted at 20%, homeworks at 45% and quizzes at 35%. As a result, your performance on homeworks and quizzes currently has the greatest influence on your predicted grade. Please Note: These percentages will go DOWN as the other means of evaluation (project, presentation, and class participation) become available.

So, for now, try to keep the "Oh Noes!?!?!!! Teh webzite says I'm DOOMED!!" messages to a minimum since eventually the final weight for quizzes will be 15% and the final weight for homeworks will be 20%. And, you will have additional opportunities to raise your performance in these two categories as the semester progresses. However, if you do have questions, send me an e-mail!

Midterm Results

The grader and I finished grading the midterm this morning and I have posted the results to the Grades page (along with the results of Quiz 3). The grader intends to have Homework 3 graded by the middle of next week. I'll post those results when I have them. In general, the class did very well on the midterm. The highest score was 100 out of 100. The lowest score was 61 out of 100. The average score was 90.14. The median was 92. The mode was 99. The standard deviation was 8.4.

I will return the midterms during lecture tomorrow. I will also deliver midterms belonging to CAETE students to CAETE tomorrow after class. They will then ensure that your midterm is delivered back to you. Any remaining midterms will stay with me and you can collect them by coming to my office hours or sending me e-mail to arrange a time to pick it up.

Lecture 16

The slides for Lecture 16 are now available.

Update on Quiz 3

The grader examined all Quiz 3 submissions and gave students points back for two of the questions on the quiz that I'm throwing out. 

The two questions are the "Cucumber is based on BDD" question and the "reader threads and synchronized method" question.

If you missed either or both of these questions, please login to moodle and verify that the grader gave you points back for them.

Contact the grader if you have any questions and my apologies, once again, for the problems these questions caused!

Reminder: Midterm Tomorrow

Reminder: the midterm will be held tomorrow during our normal lecture time. If you are an in-class student, DO NOT SKIP CLASS TOMORROW!

For CAETE students:

I will be giving CAETE the midterm today. They will send copies of the exam to your designated test proctor. You have until next Tuesday to arrange a time to meet with your test proctor and take the exam. Your test proctor should then fax, email, or mail your exam back to me. The last day for you to take your exam is Tuesday, March 13th. For my own planning purposes, please send me a message letting me know when you have scheduled to take your exam.

If you are a CAETE student and will be showing up tomorrow to take the midterm in class, please send me an e-mail to remind me of that fact. I want to make sure that I print enough copies of the exam.

Due to the nature of CAETE students taking the exam, I will not discuss the exam in lecture until Thursday, March 15th at the earliest.

Problems with Quiz 3

I'm being contacted by students who have taken Quiz 3 and had difficulties with some of the questions on it. The biggest problem with the Quiz is the question "Cucumber is built on the concepts of behavior-driven development". The answer for this question should have been TRUE but the moodle was incorrectly configured and is looking for the answer FALSE. As a result, all students will get a point for this question, regardless of how they answered it. I will review other questions for similar problems and make adjustments accordingly. Sorry for the problems. 

Quiz 3

As promised, Quiz 3 is now available on the moodle. It will be open until 11:59 PM on Monday, March 5th. The quiz is worth 50 points and covers material from the entire semester with an emphasis on material that has appeared since Quiz 2.

Cupcakes!

I meant to announce in lecture this morning that CU's Women in Computing group is hosting a cupcake social today in the lobby of the Dicovery Learning Center from 2:30 PM to 3:30 PM today! If you are on campus this afternoon, head over to the DLC for free cupcakes!

Increasing performance of java.net.URLConnection

While working on the program for Homework 3, a student in this class discovered that URLConnection will attempt to keep an HTTP connection active with a website just in case you end up making multiple calls to that site. In the context of our Twitter homework example, depending on how you make the connection to Twitter, the JDK may try to keep the connection alive and therefore increase performance as it doesn't have to tear down and then immediately set-up that connection between calls. However, if you encounter a 502 or other error, in order to keep the connection alive, you need to read the entire error response off the buffer rather than just ignore it. If you fail to read the full error response, the connection is broken and you get slower performance. If you are interested, more details can be found here:

http://docs.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html

Lecture 13

The slides for Lecture 13 are now available.

Homework 3 FAQ

I've been receiving some common questions about the programming assignment for Homework 3. I'm summarizing questions and answers here:

1. Do I need to get a Twitter account?

Answer: No. A Twitter account is not required for this assignment. If you use the URL schema shown in lecture for accessing a Twitter user's account, you are doing so, anonymously. This is perfectly fine but its one of the reasons that Twitter limits such requests to 150 requests per hour.

2. How do I find Twitter user names?

Answer: Head over to twitter.com and type search terms in the search box at the top of the page. You will get back a list of tweets containing the terms you entered. At the top of each tweet appears the full name and user name of the Twitter user who generated that tweet. You can click on that user name to see the user's profile, which should indicate how many tweets they have generated. Look for users who have more than 3200 tweets. Twitter will list their name as @ladygaga. You would then enter the name ladygaga into the URL schema that we discussed in lecture.

3. What's this URL schema thing you keep mentioning?

Answer: You will retrieve a “page” of tweets for a particular user by making an HTTP GET request on a URL that looks like the following:

http://twitter.com/statuses/user_timeline/<USER_NAME>.json?count=200&page=<PAGE_NUMBER>

As such, if you wanted the 15th most recent page of Lady Gaga (@ladygaga) tweets, you would hit Twitter with the following request:

http://twitter.com/statuses/user_timeline/ladygaga.json?count=200&page=&15

You can access 16 pages of 200 tweets per user for a total of 3200 tweets.

4. How many hundreds of users should my program collect tweets for?

Answer: Just nine. You can only make 150 requests on Twitter per hour. If you collect 16 pages of tweets for 9 users, that results in 144 requests which means you'll have to wait for a bit before Twitter will let you make a burst of requests like that again.

5. Printing out 28,800 tweets for each of my two program runs (sequential and concurrent) is going to take a lot of paper. Do I really need to bring a print out of my programs' output?

Answer: Yes, I do want a print out of your program but I do not want your program to be printing tweets to standard output. You should be storing tweets in a file (one file per user). You do not need to show me the contents of those files. Instead, your program should print a message to standard output for each page of tweets you request. A sample run might look like the following:

…
Retrieving page 5 for user "ladygaga".
Retrieving page 3 for user "justinbieber".
…
Finished retrieving tweets in 13.4 seconds.

6. What should I do if I make a request to Twitter and receive a 502 HTTP status error?

Answer: Putting the smarts into your program to handle this error (or any non-200 HTTP response) is out-of-scope for this assignment. You can print an error message to standard out (e.g. “Failed to retreive page 5 for user "alyankovic".”) and move on.

7. What should I do if this FAQ did not answer my question?

Answer: Send your question to Prof. Anderson and he'll update this FAQ!


Grades for Homework 2 and Quiz 2

The Grades page has been updated to reflect the grades received for Homework 2 and Quiz 2. If you have questions about your Homework 2 score, please contact the grader first for feedback.

Clarification for Homework 3

I received the following question concerning Homework 3:

On question 4, you ask: “Why is the use of mutable variables being discouraged? What benefits does it provide?”
For the second part, what does “it” refer to?

Sorry for the ambiguity! “It” refers to the use of mutable variables being discouraged.

I am updating the text of question 4 on Homework 3 to try to remove the ambiguity. FYI.


ACM Student Chapter: Movie Night!

The ACM Student Chapter will be hosting a movie night in the Discovery Learning Center this Tuesday from 7:30 PM to 9:30 PM. This event is open to all. So, show up and enjoy a good movie (Spaceballs) with other people interested in computing at CU (CS Ugrads and Grads, other engineering students, and ATLAS students).

Sample Code for Lectures 11 and 12

The sample code for Lecture 11 and Lecture 12 is now available.

Lectures 11 and 12

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

Homework 3

Homework 3 is now available. You have two weeks to complete this assignment. My recommendation: Start Early!

Lecture 10

The slides for Lecture 10 are now available.

Software Engineering Presentation

Details on the Software Engineering Presentation assignment are now available. Presentations are due on the Friday before Spring Break. You can work on the presentation in teams up to two people. Find a topic and send it to me for approval.

Lecture 9

The slides for Lecture 9 are now available. See you tomorrow.

Quiz 2

Quiz 2 is now visible on the moodle. It will become available at 10 AM this morning and will be open until 11:59 PM on Thursday.

Lecture 8

The slides for Lecture 8 are now available. Sorry it took me so long to get them posted.

Lecture 7

The slides for Lecture 7 are now available.

Grades for Homework 1 and Quiz 1

The grades for Homework 1 and Quiz 1 are now available on the Grades page. To learn how to calculate your id, see How to Compute Your Id on the What's New page.

How to Compute Your Id

To see your grades on this website (grades for Homework 1 and Quiz 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.

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

Note: In some cases, I have removed spaces from last names. If your name is similar to "Al Sawan" or "Mc Cleaveland", I have likely condensed your name to "AlSawan" or "McCleaveland" in my roster. If you think I did that with your name, then remove the space and do the calculation above to see if the new id appears on the lists that appear on the Grades page.

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


2nd Annual Mobile Apps Challenge


If you are

  • a CU Student App Developer
  • have developed a well-functioning mobile app in either iOS, Android, Windows Phone or as a Web App
  • are looking for summer internship in programming with great companies (i.e Backflip Studios)
  • are looking for the opportunity to demonstrate your technical skills with potential employers and looking great on resume
  • and like to win a cash prize (over $1,000 in total)

then you should participate in the 2nd annual CU Mobile Apps Challenge, a contest designed by CSUAC for CU student app developers who would like to meet each other and would like to demonstrate their technical expertise with distinguished guests from Boulder's tech community. Last year we had representatives from Sendgrid, Trada and Orbortix and this year we welcome Backflip Studios (they develop the famous Ninjump and Paper Toss apps). CSUAC is currently working on bringing more sponsors. All companies are looking for potential summer interns/employees.

When: Wednesday February 29th, 6:30pm
Where: To be announced
REGISTER AT: http://goo.gl/ASOf0

More questions? Contact Phu Nguyen for more details.


Homework 2: Run in Server Mode

Make sure you run the program in Homework 2 in server mode:

java -server Main

MacOS X runs in this mode by default; Windows (and possibly Linux?) runs in client mode by default. You are much more likely to see the interference problems if you run the program in server mode.

Extra Credit for Homework 2

An alert student sent me the following message:


Prof Anderson,

After fixing the synchronization issue for the programming question, I notice the program ends after 200 products are produced but before all 200 can be consumed:

Consumed: Product<188>
Consumed: Product<189>
Produced: Product<195>
Produced: Product<196>
Produced: Product<197>
Produced: Product<198>
Produced: Product<199>

It's a fixable problem but perhaps outside the scope of the question.  Do want us to implement a way to ensure all 200 get consumed?


He's right! If you'd like to fix this problem in addition to the synchronization problem, I'll grant 5 points of extra credit.


Forum for Teammate Discovery

If you are looking for someone to collaborate with on homeworks and other upcoming assignments, I created a topic on the moodle to enable the process of finding a teammate. To find the forum, login to the moodle, select CSCI5828-SP12, click on the News forum link, and then click on the Looking for Team Members discussion. You can reply to my initial post to leave a message about your availability to collaborate with someone on future assignments. Hope this helps!

Microsoft Tech Talk

Microsoft will be on campus hosting a technical talk and recruiting session on Monday, February 13th at 6 PM in Math 100. The announcement of the event reads: "Join us for A DEEPER LOOK AT HOTMAIL – SCALE, INNOVATION & CHALLENGES. Discover the endless opportunities that await you and hear first-hand from Microsoft Employees about the innovative technologies they work on every day. Bring your resume for a chance to win an Xbox+Kinect! Games! T-shirts! Xbox Live Memberships! As always, snag some free food!" Wow, that's a lot of exclamation points! 😃 More seriously, it should be a fun event. 


Software Engineering for Software as a Service

Two professors at the University of California, Berkeley will be running a course on the topic of developing Software as a Service (SaaS) systems using agile techniques and Ruby on Rails. The course is free, starts on Feb. 20th, and will run for 5 weeks. It looks to be a really good class!

CU New Venture Challenge

At the end of lecture yesterday, one of our students mentioned CU's New Venture Challenge and its IT track. Check it out if you have an entrepreneurial  bent and would like to learn more about turning an idea into a product!

Homework 2

Homework 2 is now available.

Lecture 6

The slides for Lecture 6 are now available.

Dealing with Legacy Platforms

37signals has a great post today on the complexity they face in managing code on multiple platforms (web browsers + operating systems) and on the decision to drop support for an old platform. In particular, they announced today that they will be dropping support for a browser that is more than five years old but which is still used by 6% of their active users. They decided that rather than have to write conditional code that supports that old platform, it was time to tell those users to upgrade to something that conforms to modern web standards.

ACM Student Chapter Meeting Tonight

The new leadership of the ACM Student Chapter posted the following message announcing their first meeting of the semester. This group is open to both undergraduates and graduate students, so if you are interested in planning fun events for the semester, stop by the CSEL Conference room tonight at 6:30 PM.


Hi all,

The CU ACM Student Chapter will be having its first meeting of the semester on Tuesday, January 31st at 6:30p in the CSEL conference room. This meeting is an opportunity for students that want to be involved with our student chapter to meet the leadership and provide direction and ideas for the Spring 2012 semester and the future of our chapter. We are looking forward to an exciting, active semester and would love to hear from you all about what we should be focusing on. There will be pizza, however it will be first come first serve so make sure to arrive on time.

Don't fret if you can't make this meeting. We will be meeting every other week at the same time throughout the semester and will be posting our events well in advance so there will be plenty of opportunities to be involved. If you want to be involved but cannot attend tomorrow's meeting please let us know.

We look forward to meeting you tomorrow,
Chris Schaefbauer
Vice-Chair, CU Boulder ACM Student Chapter



Lecture 5

The slides for Lecture 5 are now available. Lecture 5 will provide an introduction to the topic of software testing.

Lecture 04: Threads Supplement

I have uploaded a short supplement to the slides for Lecture 4 that talks about Java threads in a bit more detail. I'll review this supplement tomorrow while I work to finish off the material from Lecture 4 that we didn't get to on Thursday.

Note: I'll be producing slides that are assigned to be covered on certain days of the semester. As you have seen, I will often not be able to cover everything that was slated to be discussed for a particular lecture. But, no worries, my tentative plan for the semester shown in Lecture 1 was just an initial attempt to plot out the course. Our actual trajectory through the material will be more fluid than what was presented in that plan. So, please be flexible as I chart my way through THREE new textbooks! (Why do I do this to myself?!)

Quiz 1

Quiz 1 is now available on the moodle. It will be open until 11:59 PM on Thursday, February 2nd. It has 22 questions that cover topics from the first four lectures and is worth 50 points. You get one attempt at completing the quiz, so please make sure you give yourself enough time to get through the quiz in one go. Don't try to start the quiz in an environment where you'll be interrupted.

Note: we had a test quiz that was inadvertently made available to students before we were ready. That quiz (consisting of only a single question) has been deleted.

Lecture 4 Sample Code

The sample code for Lecture 4 is now available. I was only able to discuss the Selfish/Considerate window example in lecture today. I'll discuss the other examples next Tuesday.

Relevant Tweet Today on Essential Difficulties

Lecture 4

The slides for Lecture 4 are now available.

Please submit Homework 1

I have 51 enrolled students but only 40 submissions for Homework 1 in the Moodle. Be sure to upload your submission by 9:30 AM MST. Thanks! 

CAETE Recording for Lecture 3

The CAETE recording for Lecture 3 yesterday had a problem that resulted in the entire recording appearing as just a blank green screen. CAETE is aware of the problem and (fortunately) they have a back-up. They will be restoring the video from the back-up and a new entry for Lecture 3 will appear in the RSS feed and should be called something similar to "Lecture 3 - Recovered". Sorry for the problem!

Lecture 3

The slides for Lecture 3 are now available.

More SE-Related Resources and Blogs

Students have been sending in additional pointers to SE-related resources and blogs to complement the treasure trove of links I placed at the end of Lecture 2.

Building Windows 8 is a development blog hosted by Microsoft that features posts created by the Windows engineering team as they work on developing the next major release of the Windows operating system.

Hacker Monthly is the best articles from the previously mentioned Hacker News site put into print. Note: this resource requires a paid subscription.

Hacker News

In the spirit of all the pointers to software engineering resources on the web, one student shared with me that he prefers Hacker News to Slashdot.

Email to the Class

Over the past two weeks, I've sent 2-3 messages to all enrolled students using CU's ISIS system. I'm getting indications that the messages that I sent did not get delivered. The two pieces of information that I sent in those messages was:

  • how to login to the moodle and the enrollment key you would need to register for this class in the moodle
  • the URL that points to the recorded lectures

If you did not receive any of those messages (they would have been sent to your @colorado.edu account), please let me know and I'll send the information to you directly this weekend. (I'm in meetings all day today.)

My apologies for this situation. I can tell you that, as an instructor, I find it very frustrating when important messages fail to get delivered to my students!

Homework 1

Homework 1 is now officially available. You need to have it uploaded into the moodle before the start of Lecture 4 (9:30 AM on Thursday, January 26th) and in-class students should bring a hardcopy of their assignment to Lecture 4.

Lecture 2

The slides for Lecture 2 are now available.

Websites that Support Software Development

In Lecture 1, I make passing reference to websites like Rally Software, Fogbugz, and Assembla whose purpose is to support software development by distributed teams. Today, I received a pointer to a new addition to this growing class of websites: Bit Bucket at <https://bitbucket.org/>. These sites may prove useful later in the semester when you are working on your semester projects. If you know of other similar sites, send me a link, and I'll update this post to include them.

Additional sites: github; Atlassian

Lecture 01

The slides for Lecture 1 are now available. I'll see you in class tomorrow!

Getting ahead...

Homework 1 is now available. Don't let that scare you! I'm just trying to get a head start on my class prep for the semester. You do not need to start working on the assignment until after Lecture 1 next week!

Syllabus Statements

Each semester, the University asks that students be reminded of information and policies concerning Disability Accommodations, Religious Observances, Classroom Behavior, Discrimination and Harassment, and the Honor Code. That information is located here on the Syllabus Statements page.

Textbooks

A page with pointers to the textbooks for this semester is now available. We'll be using three books (two required, one optional) to learn about agile techniques, designing for concurrency, and testing. I'll also be supplementing the information in these books with slides from previous instances of this class as well as material from other software engineering textbooks.

Welcome!

I'm starting to work on the class website for CSCI 5828 for the Spring 2012 semester. Stay tuned!


© University of Colorado, Boulder 2011