Return to this page for the latest information on CSCI 4448/5448. Subscribe to this site's RSS feed to have the most recent news and announcements appear automatically in your feed reader.
I have finished grading and have performed one last refresh of the Grades page. I will submit grades to the registrar's office later this afternoon. Have a great summer!
After trying various schemes—none of them satisfying—I have come to the conclusion that I have no objective way to measure class participation. As a result, I have eliminated “class participation” as a category of evaluation for the class and have rolled the 5% it was worth into the homework category. I have updated the Evaluation page to reflect this change. I should be done with grading shortly and will update the Grades page by this afternoon.
Whoops, I lied. The Grades page has been updated to show the grades for Homework 8. The grader graded this one, so please contact her if you have questions about your score. Most students received 25 points on this assignment. Those that didn't receive 25 either turned it in late, had a less than stellar class diagram, or didn't turn the assignment in at all.
I have uploaded all of the graduate student presentations mentioned during the last lecture. I'm now working on grading Homework 9. I expect to be updating the Grades page sometime tomorrow. (My grading software has to be refactored to handle the differences between undergraduates and graduate students now that the presentation assignment has been graded.)
I was asked by one of our students to publicize an internship opportunity with the company he is working for.
Who We Are: bConnected
bConnected™ is the software engineering arm of Connextions™ currently based out of Louisville, Colorado (will be moving to Broomfield/Flatirons area Fall ’11). We focus on developing software used by a number of primary health insurance companies across the United States. With new healthcare laws, we are looking for new innovative, approaches to improve healthcare services for the healthcare providers and the public via exchanges and other projects.
Check out our API documentation: http://bconnected.connextions.com/docs/api/
You can also check out our parent company: http://connextions.com/
The Area: Web Development
The development team is seeking Intern Web Developers with a strong web 2.0 expertise. You will be a key participant through all phases of the development lifecycle including design, development and delivery and should have some history in building end-user web applications.
To be successful at this position, you must be creative and possess excellent team skills while working in a fast paced, collaborative environment. This job requires you to be a self-starter, take ownership, work under pressure and manage multiple, concurrent tasks while still having fun.
I've posted a Demo Schedule page to show times when I'm available for demos on Friday. (For times before Friday, send me e-mail...) I've also posted those demos that are already scheduled.
Demos will be 15 minutes long and will be held in ECCS 127A. Take a look at the Demo Schedule page for directions to ECCS 127A. (It is located directly across from the CSEL.) Be sure to practice your demo so you can be sure to fit it all within 15 minutes. Thanks!
10 new presentations have been added to the Presentations page: Hadoop, JPA, Processing, and more. Enjoy!
If you are a CAETE student taking this class, you should have received an e-mail message asking you to fill out FCQs on-line; I just wanted to follow-up and say "please do so"!!! Thanks!
Homework 9 has been updated to clarify when the report is due. You can either turn it in when you do your demo or you can submit it by 11:59 PM on Friday, April 29th.
The Grades page now shows the grades for Homework 6. If you have questions about your score, contact the grader first for an explanation of your point breakdown.
The Presentations page has been updated with more interesting presentations on OO-related topics such as the Qt framework, domain-driven design, C#, the Haiku operating system (BeOS is Dead! Long Live BeOS!), and more. Enjoy!
As mentioned at the start of lecture yesterday, a recruiting event called OutTurn CU is being held next week on Thursday, April 21st from 5 to 7:30 PM at Snarkplace, located at 10th & Pearl. You can register for the event on eventbrite.com. For more information, you can send a message to firstname.lastname@example.org and email@example.com. The 12 start-up companies that will be making presentations at this event are looking for students to join internships in the areas of software development, media design, social networking, and business development. They are looking for creative developers and designers with the desire to learn new things and who have exposure to at least one of the following languages: Java, Perl, PHP, HTML and CSS.
I finished grading Homework 7 (the grader is still working on Homework 6); see the Grades page for details. I'm very excited by the work being done on the projects, there should be some fun demos by the end of the semester! Most students received 25 points on this assignment. Those who received 23 points submitted the assignment late. Those who received 21 points failed to include a class diagram as requested by the problem statement. Let me know if you have any questions. I'm going to start working on the graduate student presentations next.
Homework 8 is now available. As advertised, it is the same as Homework 7 although it now includes a question about the use of design patterns within the prototypes you are developing.
The predicated grades are estimates. They are indicators but not the final grade by any means. For instance, undergraduates have had lower averages on all assignments than the graduate students. Currently, the algorithm making the predications is not taking that difference into account.
I heard from Emily Komendera in ECOT 725 that many students STILL have not picked up their midterms. How is that possible? When I was an undergraduate, I would pick up my midterm as soon as it was available! <old-geezer-mode>And, I would walk to school, in the snow, uphill, both ways!!</old-geezer-mode> If you have not picked up your midterm yet, please bring yourself and your id to ECOT 725 and pick up your exam. Emily will hold the exams for one more week and then recycle the remaining exams.
The Grades page has been updated to give you a sense for your predicted grade in the class. Currently, the prediction assumes (for all students) that homeworks are worth 70% of your grade and the midterm is worth 30% of your grade. After I grade the graduate presentation, this predication will make a distinction between undergraduates and graduate students, and, for the latter, homeworks will be worth 40% of the grade, the midterm will be 30% and the graduate presentation will be 30%. Finally, at the end of the semester, I will determine class participation grades and the final percentages will reflect the totals advertised on the Evaluation page.
Grades for Homework 5 are available on the Grades page. Send mail to the grader if you have questions about your point breakdown for the assignment.
My day has been consumed by meetings and so I haven't had a chance to create the Assignment 7 problem statement yet. It will show up this weekend. However, in the meantime, you don't have to be delayed. The assignment will ask you to start building the system you've been designing in Homeworks 5 and 6. We're going to switch to a format in what you submit is essentially a "progress report" on what you got done for the previous week. So, select what features you'd like to implement first and get to work. As a guide, each team member should have one or two clear things they should be working on to help produce an initial prototype (note: not a full-featured prototype) by next Friday. More details this weekend.
The Grades page has been updated with information about Homework 4. Some submissions had files that could not be opened by the grader. She will be contacting those students to try to resolve the problem. For those students, we'll update your grades once those problems have been resolved. Contact the grader to receive your point breakdown for the assignment.
2010 Domino Award: Entries Due Friday, April 8
Computer Scientists Setting Big Things In Motion
One Thing Leads to Another...
Throughout history our greatest achievements have started with one small act that set in motion profound change.
- Like Dominos:
- One domino tips and sets off a large, complex topple
- Small dominos can tip larger dominos, and each domino falls with massively more energy than the previous domino.
The Domino Award
Inspire students to “think big” by seeing how computer scientists have significantly impacted modern society.
- $500 cash award.
- Meet influential technologists from around Colorado and the US.
- Get free pizza (now we’re talking).
All participants receive a commemorative Domino and join an online “Topple” where people work together to Set Big Things in Motion. This award was started in 2002 by Herb Morreale (CS alum 1991) and Professor Clayton Lewis. It is supported in-part by Topplers, a local non-profit with a mission to inspire, motivate, and educate people to start as many topples as they can!
How to Enter
- Write a 500-800 word essay honoring someone from the field of computer science. Essays will be judged for their ability to clearly communicate how the honoree’s work set in motion a “series of dominos” that changed the world.
- Send your essay to Clayton Lewis <firstname.lastname@example.org> by 5PM April 8.
Another student shared a link to more mockup tools, this time focusing on free mockup tools for web and mobile apps especially for those who use Linux.
Quick Update: Exams for in-class students can be picked up from Emily Komendera in ECOT 725. Bring your id to pick up your exam.
The Grades page has been updated with information about the midterm. 100 students took the test. The lowest score was a 26. The highest score was a 98. The average score was an 81. The most common score (the mode) was an 88. The standard deviation was 14. The grades page also shows the average score broken down for graduate students and undergraduates. For CAETE students, I will give your midterms back to CAETE on Monday morning. They will then deliver them to you. For IN-CLASS students, I will place the exams in ECOT 717 on Monday morning. Swing by that office with your student id to pick up your exam. I will answer questions about the grading of the exam at office hours on Tuesday.
The Grades page has been updated with information about Homework 3. As always, contact the grader to get more information about your scores.
A student sent me this mnemonic device for remembering the UML notation for aggregation and composition. Enjoy:
Composition: first letter is 'c', which I associate with carbon and carbon is black.
Aggregation: first letter is 'a', which I associate with air and air is transparent.
I will be reviewing the midterm tomorrow in lecture BUT I won't be handing back the midterms until next week. I've graded half of the midterms and I estimate that I need an additional 6 hours of grading to get all of the exams finished.
Apologies but I need to move my office hours from today at 3:30 to 4:30 PM to Thursday from 2:00 PM to 3:00 PM. I have a meeting after class today from 2 PM to 3:15 PM and then an off-campus meeting at 4:00 PM, so I'm unable to squeeze in office hours today.
As mentioned in lecture, Buck Heroux has volunteered to present an Android development workshop outside of class. You will be building a useful Android App from the ground up. This will demonstrate the workflow of an Android application and will harness some other useful web technologies such as OAUTH and JSON. By the end, everyone will have built an Android-based Twitter client that they can load onto a phone and add to a resumé.
Buck is teaming up with the CS Undergraduate Advisory Committee for this event, so there will be free pizza available!
This event will be held on Thursday, March 10th from 5 PM to 9 PM in Business 203. Come out and improve your Android development skills!
The code for the examples I showed during Lecture 16 is now available. Just a reminder: the ProjectEPICFilters code will not work on your machine due to the fact that the "epic-vm2" host is a research machine that is not publicly available. Consider that code a template in which you can change the URL to some other web service that provides JSON (see developer.twitter.com for examples) and then modify the JSON parsing code to make the code work for some other web service.
So far I have registered 38 project teams for the class. I have 9 students who have not yet joined a team. Please do so ASAP. Use the class mailing list if you need to locate partners and/or existing project teams to join. I have several single-person teams in which the person was actively searching for partners and no one responded.
Of the 38 project teams, 8 of them still haven't contacted me with a project idea. Do so by the end of this week.
The grades page now shows the average score for each assignment broken down by Undergraduate and Graduate student scores.
We will have a lecture on Android this thursday and NOT, as advertised, a review of the midterm. The reason for this is that CAETE students will be taking the midterm with their test proctors throughout the week and so I can't discuss the test until I have all six exams from the CAETE students in my hands. So, we will discuss the midterm NEXT thursday and in the meantime I will present lectures on intermediate Android and iOS.
If you are a CAETE student, make sure that you have arranged with CAETE to have a test proctor (I think they refer to them as "EO"s) give you the test. I will be giving CAETE the midterm by Monday afternoon, they will then forward the test to your test proctor by Tuesday morning. You will then have up to one week to arrange to meet with the proctor to take the test. Your test proctor will need to scan your exam and e-mail it to me by Tuesday, March 8th. Let me know if you have any questions.
The Grades page has been updated to include information on Homework 2. Contact the grader for details on the score you received.
You need to join a team by Friday for the semester project. You can use the class mailing list to facilitate team formation... there have been several great project ideas posted on that list already. I need to know the members of your team by Friday. You then have until Monday to come up with a project idea for my review.
13 of the 45 graduate students registered for the class still need to send me a topic for their presentation. Topics are due to me by Friday.
A student pointed me at the following URL that shows that the instantiation behavior of Android activities can be customized in an application's Android manifest file:
More information can be found here:
Finally, here is documentation on the startActivityIfNeeded method that was mentioned by a student in lecture:
It appears that there is a lot of flexibility built into Android for customizing the behaviors associated with starting activities!
If you want to get started early on studying for the midterm, you should know that all content from lectures 1-13 and chapters 1-11 of the textbook can appear on the textbook. However, I will emphasize content from lectures 1-9 and the textbook more than the content in lectures 10-13. (You should be familiar with the latter but really know the former.) Look at the homeworks for examples of the types of problems that will appear:
- Memorization of important terms and concepts such as polymorphism, inheritance, code to an interface, abstraction, encapsulation, etc.
- Ability to apply the important concepts when answering “short answer” questions such as those found in the homeworks.
- Ability to draw UML diagrams based on textual descriptions: UML notation introduced over several of the lectures during the first few weeks of class.
- Abiliity to demonsrate undrestanding of the design patterns that have been covered and to apply knowlege of them to example problems.
- Abiliity to construct a use case from requirements and a task description and to convert that use case to an activity diagram or sequence diagram.
This list is not exhaustive and shouldn't come as a surprise as they reference the primary things we've been learning about this semester!
Homework 4 is now available. Associated with this assignment are two movies and one .zip file containing a program written in Java... all of these extra files can be viewed at the Sample Code page of this website.
I was minutes from being able to release Homework 4 and I made a mistake and lost a bunch of source code that I spent the entire morning creating. I know have to start from scratch and, as a result, I'm not going to be able to release Homework 4 until late tonight or early tomorrow. As a result, I will delay the due date of Homework 4 next week. Stay tuned.
Lecture 12 is now available. Sample Code featuring the object-oriented and non-object-oriented versions of the Hello World program is also available.
A student sent me this link to provide additional information on getting Android installed. If you know of other Android-related resources, send them to me and I'll update this post with pointers. Thanks.
In prep for this week's lecture and a future homework assignment, you will need to get Android installed on a machine that you have access to. I worked my way through the steps to install Android at the beginning of the semester and here are the (minimum) steps you need to follow to get ready.
- Verify that you have the JDK installed. I have:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04-307-10M3261)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-307, mixed mode)
but these tools should be able to work on a range of JDK versions.
To verify that you hava Java installed, open up a command-line terminal on your machine and enter the following command:
If you do not have Java installed, go to http://www.java.com/en/download/index.jsp to download it and follow the instructions to get it installed.
- Download the Eclipse IDE for Java EE Developers at <http://www.eclipse.org/downloads>. On Mac, double click the .tar.gz file and then move the resulting eclipse folder into your /Applications folder. You can then drag the icon for the Eclipse environment to the Dock. On other platforms, follow the instructions provided by the Eclipse Foundation.
- Download Android SDK at <http://developer.android.com/sdk/index.html>. I downloaded the file android-sdk_r08-mac_86.zip for MacOS X. You will need to download the file appropriate to the platform that you have access to. Unpack the archive that you downloaded and move it to a location in your home directory. I will now refer to that location as $ANDROID.
- Download a version of the Android platform. To do this, from the command line, execute the following command:
In the resulting application, click on Available packages to download an Android platform. I downloaded and installed the following packages:
Android SDK platform tools, revision 1
Documentation for Android SDK, API 9, revision 1
SDK Platform Android 2.3, API 9, revision 1
Samples for SDK API 9, revision 1
Google APIs, Android API 9, revision 1
Note: I do not intend to cover the recently released Android 3.0 platform. However, an enterprising group of students could decide to explore that platform for their semester project or an enterprising graduate student could decide to make Android 3.0 the topic of their presentation. (Hint, hint.)
- Install the Android plug-in for Eclipse by following the instructions at <http://developer.android.com/sdk/eclipse-adt.html>
- Configure the Android plug-in using the instructions labelled “Configuring the ADT Plugin” on the page listed above in step 5.
- There is no step 7.
Let me know if you have any questions.
Details of the presentation that graduate students must create for this class are now available.
As anticipated, the students who received "Not Submitted" grades on Homework 1 got back to me and I tracked down those cases where the grader had missed that a particular submission was a group effort. I've now updated the Grades page to display the correct scores for those students affected by this situation.
Note: Despite what I said in lecture this week, I've decided to hold off on assigning a new homework for one more week to give the grader a chance to get through Homework 2. So, enjoy your weekend!
The grades for Homework 1 are now available on the Grades page. See the previous What's New post to learn how to calculate your id. I will be discussing the assignment on Tuesday and will be releasing examples of excellent student work to show you what we were looking for while grading the assignment. You will not be receiving individual feedback on your assignment from the grader, although we do have records of what points were deducted from each submitted assignment. If you have questions about what points you missed, you can contact the grader. I will be sending her e-mail address to each enrolled student in just a few minutes.
To see your grades on this website (grades for Homework 1 will be published later today), you first need to calculate the id I'm using to represent you. To do this, start with your student id, take out the hyphens and finally write down the last five digits of the resulting number. If the first digit of the resulting number is zero, drop it.
Example 1: Assume your student number is 555-65-4321. After following the instructions above, you would be left with the number 54321.
Example 2: Assume your student number is 555-60-1234. After following the instructions above, you would be left with the number 1234.
Now, take your last name, make it lower case, and cycle through its characters. Assume that 'a' is mapped to 1, 'b' to 2, ..., and 'z' is mapped to 26. For this class, there are two special characters. A space character maps to -64 and a hyphen maps to -51. Map each character in your last name to its value and add up all the values to calculate a sum. Add this sum to the number above to calculate your id.
A student in our class thought that others might be intersted in this upcoming event.
The February Boulder Linux User Group meeting is coming up. Talk : Unlocking the Secrets of Git Speaker : Tom Preston-Werner When : 7 p.m. on Thu, Feb 10, 2011 Where : Aztek Networks, 2477 55th St, Suite 202, Boulder, CO. Aztek Networks is on 55th between Arapahoe and Pearl, just north of the Humane Society. There's plenty of parking, and the 206 and 208 busses stop across the street. Map : http://lug.boulder.co.us/meetings.html Summary of 'Unlocking the Secrets of Git' ----------------------------------------- Everyone knows that Git is the tremendously powerful distributed version control system created by Linus Torvalds, but did you know that Git is really just a userland file system with some extra goodies to make it work for version control? This secret life of Git allows us to do some insanely great things. In this talk I'll show you how Git works under the covers and give you a taste of what's possible when you understand the magic within. Pre meeting food ---------------- Please join us informally for a bite to eat at Panera Bread before the meeting, around 5:30 P.M. Panera is in the 29th street mall, east of Highway 36/28th street near Walnut.
I've updated the slides for Lecture 9 to contain the "quiz" I stuck at the front of lecture and my answer to applying the strategy pattern to the Bank Account question.
I can't meet during my regularly scheduled office hours tomorrow. As a result, for this week only, I will hold office hours after class on Thursday from 1:45 PM to 3:00 PM.
The slides for Lecture 8 will be released after lecture today. I've got a question or two for you this lecture that would be less effective if you had the answers on the next slide! See you soon...
If you find yourself needing to reference an object in your sequence diagram, you can name the object and then include the name in subsequent method calls. Thus, imagine you are in a situation in which a Camera object has just created a Photo object and you now need to store that photo in an Album. In your sequence diagram, you can show the Camera object creating another object whose name is "p1: Photo". Then, when you show the main program calling addPhoto() on the Album object, you can instead say addPhoto(p1). This more clearly shows that you are making use of objects created in the sequence diagram in subsequent method calls on other objects. Hope this helps!
I have uploaded an updated set of slides for Lecture 7 that contain the changes I made to it just before lecture started. If you had previously downloaded the slides for yesterday's lecture, then please download them again.
I have updated the text of assignment 3 to clarify the new requirement. It used to say:
The system allows pet owners to create profiles for each dog that they own and then record multiple sounds of those dogs to be associated with their profiles.
It now says:
The system allows pet owners to create a profile for each dog that they own and then record one or more sounds of a dog to be associated with its profile.
The intent is that there is one profile per dog. A profile can have zero or more sounds of that dog associated with it.
Sorry for the changes… this is just another data point that creating/specifying clear requirements is HARD!!
I received a question about whether students could hand draw the figures for Homework 3 and then scan them in, convert them to PDF and then submit them. Short answer: "Yes".
There was a typo in bullet 5 of the original Assignment 3. It used to say:
5. Identify an activty or set of activities in your use case and create a sequence diagram that shows how objects in the system handle those activities.
It now says:
5. Identify an activity or set of activities in your activity diagram and create a sequence diagram that shows how objects in the system behave when those activities are active. Note: you need to pick a set of activities that allows you to create a non-trivial sequence diagram. (I don't want to see a sequence diagram with just two objects and a single call between them!) Be sure to indicate what activities the sequence diagram is covering.
The point is that in step 4, you are asked to create an activity diagram that models the use case that you created. Now select a subset of those activities to model in the sequence diagram. Just be sure to pick a large enough “chunk” to ensure that you can create an interesting sequence diagram.
Let me know if you have any questions.
Yesterday, during lecture, I intended to work my way through an example of the iterative process of analysis and design that I discussed while closing out the slides for Lecture 5. I got distracted with having to switch over to the slides for Lecture 6 and completely forgot about the example. My apologies.
So, now I will present the example here and then you should be ready for Homework 3, which will be appearing on the class website soon.
Note: This example comes from the excellent book Head First Object-Oriented Analysis & Design that I've used for the past couple of years as the textbook for this class. If you are interested in software engineering and object-oriented analysis and design, I encourage you to obtain a copy of the book.
During Lecture 5, we looked at this example set of requirements.
These requirements represent the start of a conversation with a customer that would like us to build software to control an automated dog door. The dog door can be opened and closed via a remote control and it features a "bark recognizer" that allows a pet to be automatically recognized via its bark and will then open the door on behalf of the owner. Finally, the door needs to automatically close after a short delay to protect against the owners forgetting to close the door themselves.
The CSEL admin has created a FAQ on how to create a website for your CSEL account. You can follow the instructions to create your own website and then you can, for instance, upload your homework assignments to your website on the CSEL and provide me with links to them the next time an assignment is due. ☺
Please follow the guidelines I listed in Lecture 1 when submitting homework. For Homework 2, I asked you to create a single .zip or .tar archive that contains your entire assignment. The single file ensures that I keep all of your work together and makes it easy for me to pass your work over to the grader. When you send me multiple files, I have to spend time putting everything into a single archive and that just wastes my time. Those students who don't follow the guidelines for submitting homework starting next week will lose points on their assignment. Just put yourself in my shoes, imagine receiving ~75 submissions of homework 2 in your inbox and discovering that many of them require you to chase after multiple files.
For those students who followed the guidelines when submitting HW2:
Just a quick reminder that Google and our local ACM Student Chapter is hosting a tech talk tonight at 6 PM in ECCR 1B40.
They have not provided a title or abstract but I learned today that the speaker will be Scott Green, the Engineering Site Director at Google's Boulder office.
Free pizza will be provided!
I received the following question concerning the programs that I've asked you to write in Homework 2:
Q: For HW2, how will the programming questions be graded? Does there need to be a specific layout of what it should be or as long as it works, we get full points?
A: Your programs need to meet the functionality described and make use of the OO heuristics I've discussed so far in class. So, for instance, both programs should make use of polymorphism, follow the design heuristics discussed in lecture for OO classes, etc.
It's not just a case of reproducing the stated functionality but doing so in a way that follows the OO techniques discussed in lecture so far.
I've had several requests to change my office hours such that students can meet with me before the homework assignments are due. I'm happy to do so! My office hours are now on Tuesdays from 3:30 PM to 4:30 PM or by appointment. The room for my office hours remains unchanged: ECCS 111.