|Instructor||John Foley firstname.lastname@example.org|
|Prerequsites||COMSC-211 Data Structures|
|Office Hours||Tuesdays 9-12 and Fridays 2-4 or by appointment. 8 Park Street, Room 31|
Where's the Moodle?View our course on Moodle. We will only really use this for electronic submission and for grade entry.
Digital libraries could be considered an archetype of many modern large-scale systems such as e-commerce websites, music listening services, and even email clients. These systems use information retrieval techniques to find documents and natural language processing to understand texts. Databases are used to store user interactions, and the whole system must be available continuously over the web. This course will focus on understanding and making improvements to the backend of such a system built in Java. Students will work in groups on predetermined 2-3 week projects to get a feel of the various fields and technologies involved. The final few weeks of the course will be for open-ended projects. This course is programming intensive.
Course ObjectivesSuccessful students in this class will:
- Become familiar with tools and principles of server-side web programming.
- Become comfortable evaluating libraries and other open source code resources.
- Develop their programming skills, in particular their ability to plan, estimate effort, ask for feedback, and reflect on their successes and challenges.
- Develop group working habits, including the use of version control, code documentation and practice encouraging continuous learning in a group setting.
- Class Attendance & Participation: 20%
- Programming Assignments: 50%
- Questions & Plans: 20%
- Code & Reflection: 30%
- Final Project: 30%
Programming assignments will not be black boxes. This course will encourage a wholistic view of projects, from the planning phase through making changes, and review of expectations.
Projects will be assigned on Wednesdays, and due roughly a week later.
|Phase||Objective||Requirements||Relative Due Date|
|Questions||One of the key steps in any software engineering task is communication with the customer (in this case your peers and myself) about requirements. Clarity of communication is difficult and is worth practicing.||
This is a personal reflection that should include:
||Due within 24 hours of project assignment, e.g. Thursday at Midnight on Moodle.|
|Plan||Once you understand the goals of a programming task, the next step is to plan your moves. This is when you will break down the problem in your head, perhaps coding some small pieces or tests to determine how difficult it will be to interface with new code.||Roughly 1-2 pages. Describe your group's plan to complete the assignment.
||Due roughly midway through the project: Ideally this will be worked on as a group on Friday and submitted by the start of class Monday.|
|Code||In any project, there will be a code freeze. On this day you will come to class prepared to setup your project and show off the results. If not everything works, talk about what you tried. Ask other groups how they solved that problem. Look at what other groups did differently.||I will read your code alongside your final reflection, giving stylistic and material feedback. Clear, incomplete code is always better than complete code. Code is expected to compile, as starter code will be provided for all assignments.||Due in class a week after assignment: Code is frozen when you arrive in class and pull up your demo.|
|Reflection||Code is frozen, time to look back, and review what you can learn about all the previous stages: What questions should you have asked earlier? Was your estimate close? How did your plan work out?||This is a personal reflection. It should be no more than 1 page. In it, discuss things that went well, things that are still a challenge for you moving forward.
||Due in class a week after assignment: Code is frozen when you arrive in class and pull up your demo.|