What's New

Grad Student Presentation

Details concerning the Graduate Student Presentation are now available. I should stress that you will not be giving a presentation during lecture. Instead, I'll be posting graded presentations on-line and presenting one-slide executive summaries in class. Topics should be picked by October 12th. Presentations are due Nov. 16th.

How to Compute your Id

To see your grades on this website (grades for Homework 1 and Quiz 1 were published a few minutes ago), 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!


Grades

I've added a Grades page to the website. The scores for Homework 1 and Quiz 1 are now listed on this page. Stay tuned for a post that describes how to calculate your id, so you can confirm that the grades I have in my spreadsheet are the ones you were expecting.

If you have questions about your homework 1 grade, please contact the grader. I will be handing back the graded hard copies for in-class students at lecture this week.

The grader is now working on grading Homework 2.

Homework 3 Reflections

I spent time today implementing the program specified by Homework 3 to be in a better place for answering student questions. It's a fun program to write.

While implementing my solution, I found it helpful to place checks on the number of videos currently rented by a customer. I did the following:

													  public void incrementRented() {
													    numberOfVideosRented++;
													    if (numberOfVideosRented > 3) {
													      System.out.println("ERROR: Customer " + name + " has more than 3 videos.");
													      System.exit(1);
													    }
													  }
													
													  public void decrementRented() {
													    numberOfVideosRented--;
													    if (numberOfVideosRented < 0) {
													      System.out.println("ERROR: Customer " + name + " has less than 0 videos.");
													      System.exit(1);
													    }
													  }
													


This is an example of two things: implementing a class invariant and failing fast.

  • The class invariant is that a customer should always have between 0 and 3 videos rented inclusive.
  • Failing fast is printing out an error message and calling System.exit() to end the program as soon as the invariant is broken.

Applying this strategy allowed me to find bugs in my customer types as soon as they did something weird, such as rent 4 videos at once.

Finally, if you would like to see an example of the type of output your program can produce, take a look at the output generated by my program. Note: your output doesn't have to look exactly like this as long as it contains the items requested by the problem statement; plus, only the final report at the end of my output is required. (I found it helpful to print out the activity of each day and night, but that's not required.)

Hope this helps and have fun implementing your own solution!

Talk on Modern Mobile Development

Next week, we will begin our coverage of mobile app frameworks, in particular Android and iOS. Coincendentally, on Wednesday night next week, a world-famous developer, educator, and founder of the Big Nerd Ranch, Aaron Hillegas, will be giving a talk on Modern Mobile Development. This talk will present some of the history behind the development of mobile apps and then talk about how modern mobile apps are made.

This event is co-hosted by the Department of Computer Science and CU's ACM Student Chapter.

Details:

In addition, the Big Nerd Ranch is opening an office in the Boulder/Denver region and so they are hiring! They will be holding interviews with students on Thursday, October 6th. If you are interested in meeting with them, then contact the Chair of the ACM Student Chapter.

Lecture 10

The slides for Lecture 10 are now available. The sample code for Lecture 10 is also available! Also, on a side note, we are now finished with one third of the semester!

Forming Teams

I'm pleased to see that students are working early to form teams both for working on the homework as well as preparing for the upcoming semester project. I just wanted to encourage that you use Piazza to reach out to the other students in class to form teams. I also wanted to remind everyone that it's okay to have in-class students and remote CAETE students be on the same team, indeed many CAETE students perfer having a chance to work with in-class students, albeit via Skype, e-mail, etc.

The link to the Piazza post for forming teams is here:

https://piazza.com/class#fall2012/csci44485448/4


Lecture 9

The slides for Lecture 9 are now available.

START-UP TO ROCK STAR

Just a quick pointer to today's colloquium in ECCR 265 from 3:30 PM to 4:30 PM. I will be moderating a discussion with a panel of CXOs (CEO, CTO, CFO, etc.) of local technology start-up companies. The panelists will discuss what it means to pursue a technology career in the start-up/entrepreneurial world. What skills should a student possess? How does a student enter this aspect of the computing field and how is it different from working at larger companies? Our panelists have many years of experience to bring to bear on these questions and will share their insights and personal experiences working in the start-up world. Hope you can make it!

Homework 3

Details on Homework 3 are now available. Don't forget to upload Homework 2 before the lecture starts today and in-class students should bring a printout of Homework 2 to class. Also, don't forget about Quiz 1. Be sure to take it before 11:59 PM tomorrow!

Lecture 7 Slides Updated

I fixed the problems with the Strategy structure diagram and uploaded a new version of the slides for Lecture 7. Sorry for the problem!

Getting Rid of Ball and Socket

Since the Ball and Socket notation is not well supported in modern tools, the best replacement is the technique I used in Lecture 7 shown on slide 40 and reproduced below. The "ball" get replaced by two classes, one tagged with «Interface» to show what interface is being referenced/used, the second class is the one that is implementing the interface. This is shown via an association that has been tagged with the UML stereotype «implements». The "socket" is then replaced by a simple association between the class that makes use of the interface and the interface itself.

In the diagram below, the "ball" is the pair of classes named DelegateInterface and Delegate and the "socket" is represented by the association between Host and DelegateInterface.

Feel free to ignore the ball and socket notation and just use this one for the rest of the class.

DelegateStructure


Piazza

This semester we will be using an on-line website called Piazza to foster class discussion, questions, etc. The system is highly catered to getting you help fast and efficiently from classmates, the grader, and myself. Rather than emailing questions to me, I encourage you to post your questions on Piazza.

Our class page is located here: https://piazza.com/colorado/fall2012/csci44485448/home

I will be sending a link via e-mail for you to use to enroll in the class.

P.S. I see that some enterprising students already found the class page on Piazza and are already enrolled! :-)

Collaboratively Studying for the Midterm

One of our more industrious and forward thinking students, Chis Sterling, contacted me to share an approach he has used in the past to study for his midterms. That approach is to have the students in a class collaboratively edit a document to contain the most important concepts covered in class and to document any examples I use to explain those concepts that don't appear on the lecture slides.

The resulting document can serve as a resource when studying for the midterm and a reminder about what I said were likely questions that will appear on the midterm.

I think this is a terrific idea and so I'm happy to share the following URL that points to a Google document that Chris has started for this purpose:

https://docs.google.com/document/d/1Z7tSODfNrrgD6T5wZyMK7zF5jWf5j-Bl0qczG_Zt7nE/edit

Feel free to edit this document during lecture and/or to enter information from past lectures that you think will be useful for studying for the midterm.

Naming Guidelines

When uploading a file to the moodle, please follow the naming guidelines that were just added to the Assignments page. Thanks!

Sample Code for Lectures 7 and 8

The sample code for Lecture 7 and Lecture 8 is also available.

Lectures 7 and 8

The slides for Lecture 7 and Lecture 8 are now available. For these two lectures, and the class as a whole, you should make sure you have read the first seven chapters of the textbook.

Quiz 1

Quiz 1 is now on the Moodle. It will become active at 4 PM MDT on Saturday, September 15th (i.e. in roughly 15 minutes from the time this post appears) and will stay active until 11:59 PM MDT on Friday, September 21st.

You are allowed one attempt at the quiz, so make sure you are in a situation where you will not be interrupted and that you have access to all of the course material (i.e. lecture slides, your notes, and the textbook).

I will remind you to take the quiz several times this week. It's up to you to take the quiz before it closes on Friday night. If you miss the quiz, you miss it. It will not be reopened after it closes.

Homework 2

The problem statement for Homework 2 is now available on the Assignments page.

Lecture 6

The slides for Lecture 6 are now available.

Sample Code for Lecture 5

The sample code that will be discussed during Lecture 5 is now available.

Lecture 5

The slides for Lecture 5 are now available.

Homework 1 and CAETE Students

Final note on Homework 1 (hopefully): CAETE students simply need to upload their assignments to the moodle by 12:25 PM MDT tomorrow. No need for printouts, teams, etc.

You will STILL get a chance to grade an assignment created by another CAETE student, however. The grader and me will be in touch about that via e-mail. Stay tuned.

Reminder: Homework 1 Due Tomorrow

Reminder: Homework 1 is due tomorrow. You should make sure you upload a .zip archive by 12:25 PM tomorrow containing a PDF file with answers to questions 1-3 and a folder containing the source code that you wrote for question 4.

For in-class students, bring a printout of your answers to questions 1-3 AND a printout of your source code as well.

For students who worked in teams: First, THANK YOU! Second, please upload only ONE submission to the moodle for the entire team. (Just make sure all of your team members are listed on the first page of your PDF document.) Third, please bring only ONE printout of your work to class. Since you worked as a team, you will also grade as a team. You should plan on sitting together in lecture.

See you all tomorrow!

Sorting and Displaying in Homework 1

Just to emphasize for question 4, you do not have to create a GUI that graphically displays the shapes in your list. You also do NOT have to implement a sorting algorithm. All programming languages provide ways to sort instances of their collection classes. In Java, look up Array.sort() or java.util.Collections.sort(). In other languages, look for similar types of methods in the definitions of their collection classes.

The key thing I'm interested in for question 4 is are you demonstrating polymorphic behavior. Yes, you need to build a list of shapes and yes you need to sort them, but I'm more interested in whether you set up a type hierarchy and that you code targets the superclass and not the subclasses (i.e. code to an interface), etc.

Hope this helps!

Comment on Homework 1

With respect to the designs that you need to create in Homework 1, let Chapter 1 of the textbook be your guide with respect to the amount of detail these designs need to have. You do not need to generate a bunch of information for these designs, just high level overviews that provide the basic structure of the design.

Lecture 3

The slides for Lecture 3 are now available.

Sample Code

I have created a new section of the website that will host the sample code reviewed in class. I have also uploaded the sample code associated with Lecture 2. I just barely had a chance to review some of that code in lecture, last Thursday. I will spend more time reviewing all of it in Lecture tomorrow.

Homework 1 Submission

I have added a Homework 1 activity on the Moodle that allows you to submit your work for that assignment. Please upload your work as a .zip or .tar.gz file that contains the source code for question 4 and a PDF document that contains your answers for the other questions.

PLAN AHEAD. You need to submit your homework by 12:25 PM on Thursday afternoon and you also need to bring a printout of your work to class. Don't be late to class because you are stuck printing out your assignment at the last minute!

© Ken Anderson 2012