University of Saskatchewan Department of Computer Science

Welcome to the Department of Computer Science

Courses >
Printer

Computer Science 370 Detailed Information

Note that the information presented here does not necessarily reflect the most up to date syllabus or course information. Rather this information is intended to provide a general overview of course content from previous offerings.

Instructor

Chanchal Roy, Thorvaldson 280.4, croy@cs.usask.ca

Office Hours

Please email me if you have any questions or to arrange a time to meet. There are no office hours.

Course TA

  • Ripon Saha (tutorial leader)- saharipon_l@yahoo.co.in
  • Sharif Uddin (marker)- auni.ku@gmail.com

Course Description

Principles and techniques for developing software combined with the practical experience of creating a mid-size software system as a member of a software development team. Includes: teamwork; projects, planning and process; users and requirements; use cases; modeling; quality; software architecture; testing; GUI design, design principles, patterns and implementation; ethics; professionalism. Topics include:

  1. Course Overview and Project Description
  2. Projects: Teamwork, Planning, Process, Risk, Agility, Quality, Technology
  3. Users and requirements, use cases, design
  4. Software Modelling, GUI Design, Implementation
  5. Interactive Systems Design and implementation
  6. Design principles, patterns and implementation
  7. Advanced design, design patterns, refactoring
  8. Inspection and Testing
  9. Software Architecture
  10. Project Presentations
  11. Software Maintenance and Evolution
  12. Professionalism and ethics, Course Review

Prerequisites

CMPT 214 and 250.
Note: As of September 2007, course prerequisites will be: CMPT 214 and 270.3

September 2007: CMPT 250.6 will be replaced by 270.3 and 280.3.
Students with credit for 250.6 do not need to take 270.3.

Lectures and Tutorials

Lectures will cover the course at a conceptual level. Tutorials and other special sessions will provide additional information and help, as needed, especially at the technical level. Stay tuned for details during the course.

Lectures: Mon Wed & Fri 10:30 – 11:20, Thorv 205A

Tutorials: Tue 16:00 – 17:20, Thorv 205A

Grading

15% Midterm/Quizzes

45% Project (Final Project 20%; several project milestones and presentation 25%)

40% Final Exam

Textbooks

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Third Edition, Craig Larman, Prentice Hall, 2005.

Code Complete, Second Edition, Steve McConnell, Microsoft Press, 2004.

Group Project and Course Workload

The major workload in this course is a group project accomplished in self-selected teams of four people. Your team registers a company with the instructor with the goal of creating a software product for the course. It will be important to choose an appropriately scaled project that is neither too big or too small. Discussions during the lectures will help establish your project scope. The milestones and the final project submission are the responsibility of the entire group, but grades will be assigned individually based on project results and individual contributions. As a result, grades may vary between team members. A work plan outlining the tasks assigned to each team member will be a part of each milestone submission. Teamwork is also a part of the project, and a portion of your grade will be assigned based on how well your team works together. The milestones focus on key deliverables for that stage in the project, but in order to complete the project in a timely fashion it will be important to work on deliverables from later stages early in the term.

Purpose

The primary goal of the term project is to provide you with experience in planning, designing and building a realistic software product of your choosing. You will apply the various principles and techniques that you are learning in class. A part of your job is to determine the requirements for your software product based on your discussions with potential users. You will also be able to ask for clarification or check your assumptions with the instructor or a teaching assistant. A secondary goal is to give you experience in working with a group, which is how nearly all of the worlds software is produced. You should recognize right away that group management is a complicated and important activity, and you should plan on spending some of your project time keeping other members of the group informed, assisting one another, and generally ensuring that the group works well together. It is important that you keep track of group and individual hours spent on the project. Resolve group conflicts early!

Group Formation

You must form a group of 4 or less and let me know within Sep 20. Send me email if you have any queries about project selection.

Hand-in Policy

All milestones are due at 11:59 PM on a Sunday (unless otherwise specified). Milestones not handed in by that time will be given zero. The only exception is for illness or medical conditions with a doctor’s note. Since partial marks may be given for partial solutions, make available what you have completed at the due date! The final project will be due by 11:59 p.m., on the last day of classes, December 3 (Friday), with no exceptions. This is because examinations start shortly thereafter and students cannot still be working on projects during the exam period.

How to Hand in Your Work

At each milestone, your team will electronically hand in your project portfolio. The entire web site portfolio is to be archived, compressed and handed in using the department’s E–Handin system/Moodle. Hand in the entire portfolio at each milestone. Also, make sure that you keep backup copies of all project materials - if something goes astray for any reason, it is your responsibility to reproduce what was lost!In case there is any difficulty just email me your submission.

A compressed archive to be handed in using the E-handin system can be created on Unix with the following commands:
tar cvf milestone1.tar YourCompanyName
gzip milestone1.tar

Alternatively you may create .zip files using any of the popular archive/compression tools.

Note: Please make sure that you use relative links on all of your web pages so that the marker will be able to navigate your site when installed in a different location! Also ensure you use proper permissions on all files and directories for access by your group and marker.

Midterms/Quizes Dates

First midterm: On or before October 11

Second midterm: On or before November 3

Third midterm: On or before November 15

Project Grading and Due Dates

1.5% Milestone 1: Early Project Definition (September 26)

1.5% Milestone 2: Final Project definition‏ (October 3)

2% Project proposal presentation (TBA)

8% Milestone 3: Requirements and preliminary design (group) (TBA)

8% Milestone 4: Detailed design of work units (individual) (TBA)

4% Project presentation (group) (Last week of lecture)‏

20% Final project (group and individual) (Dec 3)‏

Possible Topics to be covered (subject to change)

Week Week Of Topic Subtopic
1 Sep 6 Introduction The course: goals, content, workload, and expectations
The course project
2 Sept 13 Software Process The nature of software and software engineering
Software failures
Software process models
3 Sept 20 Software Projects A case study
Software projects, teams & planning
Problem definition and system scope
Basic cost estimation
4 Sept 27 Analysis Requirements and use cases
Business and domain modelling
5 Oct 4 Design Model based development
Introduction to design patterns, design principles
Mapping designs to implementation
6 Oct 11 Design Design principles and patterns
7 Oct 18 Design Advanced design patterns
8 Oct 25 HCI Usability engineering
GUI development
9 Nov 1 Testing Quality assurance, Basic testing methods
10 Nov 8 Software
Architecture
Software architecture introduction
SA styles, SA evaluation,
11 Nov 15 Maintenance The importance of maintenance
Refactoring and re-engineering
12 Nov 29 Project Presentation Student project presentations, Professionalism and Ethics
Note: This table only shows an overall view and not necessarily reflects the exact lectures, midterms and guest lectures.

Lab Facilities

You will have access to the Department computing facilities on the third floor of the Spinks addition. Systems

Your project must be developed in Java (unless otherwise you are allowed to do so in another language) and must run transparently when accessed through the Department’s standard computing environment. Your analysis and design artifacts (including diagrams, documentation, test suites, interface designs, etc.) must be similarly transparently accessible (use a format such as PNG, JPEG, GIF, HTML or PDF). Your team will be assigned a web site (with access to perl cgi and php environments) and your project artifacts should be easily accessible from your main page with a standard browser. Apart from these constraints, the actual technology choices you make to implement your project are up to your team. However, you should note that the Department has a variety of software platforms and tools available on the machines in the laboratory that could be used in the project. These include the Java Platform, java.sun.com, with Java, JavaDoc, the Java Development Kit and JavaSwing, as well as tools such as Eclipse, www.eclipse.org, an open source platform that includes many tools including UML drawing tools; Microsoft Visio, office.microsoft.com, a drawing editor useful for creating UML diagrams and other figures; Red Hat Cygwin, www.cygwin.com, a Unix environment developed by Red Hat for Windows to be used for running regression tests and constructing executables; SVN, a popular version control system to manage concurrent access to your source code; and gVim, www.vim.org, a text editor commonly used by software developers to edit programs based on the Unix editor vi. Java servlets are also available, but require some lead-time to set up.

Project Portfolio Web Site

Your project can be structured as a web site, and should include a description of the product, and links to each project artifact. There should also be a clear indication as to which team member created which project artifacts.

Organizing Your Project Workspace

The website for your project should be rooted within your company directory. In your company directory create a home page.

/YourCompanyName/index.html

All your project artifacts should be linked directly or indirectly from your home page. Project artifacts include source code, diagrams, executables, technical memos, test cases, scripts, and so on. Use file formats that are viewable with a typical web browser. For example, use JPEG, GIF, PNG or PDF for your diagrams, and NOT the Microsoft Visio format.

Use separate directories to organize your project artifacts. For example, your source code, Java classes, Java documentation, data files and any other documentation for your implementation could be organized into separate directories within an implementation directory, for example:

/implementation/source/

/implementation/classes/

/implementation/javadoc/

/implementation/data/

/implementation/testsuites/

/implementation/documentation/

Once again, you will need to be careful to distinguish the files that are attributable to a group member. Minimally, ensure that the author of a program is noted in the comments of the program. You may wish to organize individual contributions in subdirectories by NSID, or (perhaps more ideally) provide a web page for each individual that links to their contributions.

Scripts should be provided to compile the source code, run the program, and run the tests. You may use separate scripts to compile each component, and it is recommended that you use a Makefile; however, ensure that there are three high level scripts for making, running, and testing your program. If you are using Java as your implementation language, you are encouraged to create a .jar file in addition to compiling the classes.

/implementation/makeAll

/implementation/run

/implementation/runtest

/implementation/yourproductname.jar

A README file should be provided to explain how to use make, run and test your program. The file should also explain the organization of your implementation directory.

/implementation/README