Sections and Locations:
|B1||Marsland||TR 12:30-13:50||CSC B-10|
|X10||Beck||T 18:30-21:30||BUS B-28|
|Tony Marsland||B1||CSC email@example.com|
|Bob Beck||X10||GSB firstname.lastname@example.org|
|Greg Girczycemail@example.com||H01 Mon 1400-1650||CSC 159|
|Matt Olsonfirstname.lastname@example.org||H02 Wed 0800-1050||CSC 159|
|Kai Tanemail@example.com||H03 Wed 1100-1350||CSC 159|
|Curtis Schofieldfirstname.lastname@example.org||H04 Thu 0800-1050||CSC 159|
|Inna Shekhtmanemail@example.com||X11 Mon 1830-2130||CSC 159|
|Greg Bellfirstname.lastname@example.org||X12 Thu 1830-2130||CSC 159|
Note: new TA's get support for their labs from experienced TA's. Please report any problems or praises about labs to the head TA and your instructor.
The best way to contact your instructor or TA outside of the lecture or lab is via email. In general we will not be having regularly scheduled office hours, but can answer questions via email, or arrange appointments if necessary. The use of email is the most efficient use of both your time and ours.
The course home page is http://ugweb.cs.ualberta.ca/~c201.
The course news group ualberta.courses.cmput.201 is one of the best ways to ask questions, since it is monitored by the instructors, the TAs, and other members of the class.
To access the the newsgroup from off-campus you must first make your web browser recognizable by the CNS proxy server. That web page tells you not only how to set up your browser, but also how to authenticate yourself using your CNS ID and password.
If you have problems with machines etc., contact the Computing Science Lab Admin people at email@example.com. Also, if you do not yet have a computing science undergraduate UNIX ID, you should go to Lab Admin in CSC 1-47 as soon as possible. You will not be able to do the labs or assignments if you do not have an ID.
There are many good (and many more bad) books on C, C++, and Unix. These are the ones we have ordered for the course, but if you have a trusted friend who recommends another text, by all means go ahead and use it. These texts will be used as references, we will not be lecturing from them.
Books for Section B1 are:
Books for Section X10 are:
There are many other references and suppliers, some of which are described here.
Software Engineering is the discipline of Computing Science that involves the analysis of the information processing needs of individuals and organizations, and the development of software solutions to these needs with due consideration of cost, reliability, suitability, ethical factors, and social consequences.
There are three broad subject themes which combine to form Software Engineering:
These themes are supposed to be practiced in a professional manner with due consideration of cost, reliability, suitability, ethical factors, and social consequences. Our vision of the course sequence CMPUT 201, 301, 302, 401, 402 is that these three themes are interwoven throughout the courses, and that they are seen early, often, and practiced at increasing levels of complexity. Cmput 201 is just the first course in this process.
The main theme of CMPUT 201 is programming to a well defined interface. In CMPUT 201, one uses components as black boxes that have an interface, builds components that are supposed to implement a given interface, and uses tools to do this effectively. This theme is exercised in the context of the C and C++ languages.
In terms of problem domain, CMPUT 201 focuses on the manipulation and transformation of text (as contrasted to graphics). In terms of techniques, it focuses on low level language issues such as: how is data stored and represented, how is memory managed, how are pointers used, what is the call stack, how is an object stored. In terms of architecture and design, it concentrates on simple architectures, and students construct components that fit into the architecture.
Students in CMPUT 201 must learn to clearly communicate the specification and rationale for an interface, and the design of their implementation.
In terms of languages, this course uses C and C++. But these will not be taught as distinct languages, as has been done in the past. Instead, we will be using C++ from the beginning, and treat C as a subset (or dialect) of it. C++ will be C, plus objects, plus additional ways of doing memory allocation and stream input/output, plus a difference in perspective.
A rough summary of the content in the course is given by the following table:
Individual instructors schedules and course notes can be accessed through these links. Feel free to look at the notes for the other sections.
|Marsland||Section B1 Notes|
Because of class format and differing styles, the schedule and order of the material will vary somewhat between instructors. However, the labs are common to all sections:
|1||Jan 8||none||but make sure you have a CS UNIX ID|
|2||Jan 15||Lab 0||Unix Basics|
|3||Jan 22||Lab 1||More Unix, CVS, Makefile for Assignment 1|
|4||Jan 29||Lab 2||Strings and Memory in C|
|5||Feb 5||Lab 3||More Complex C Programs and Debugging|
|6||Feb 12||Lab 4||Memory, pointers, and arrays|
|7||Feb 19||none||Reading Week|
|8||Feb 26||Lab 5||Function pointers|
|9||Mar 5||Lab 6||Introduction to C++ Objects|
|10||Mar 12||Lab 7||Templates|
|11||Mar 19||Lab 8||Introduction to the Standard Template Library|
|12||Mar 26||Lab 9||Extending C++ Classes|
|13||Apr 2||Lab 10||Polymorphism and Virtual Functions|
A previous TA wrote down some helpful hints for the labs, they are here.
Note: From time to time the labs are revised. Ignore solutions from previous semesters.
Assignments will involve technology, communication, and management. They will not simply be the writing of programs. Part of each assignment is developing the plan to carry it out. Each assignment will have a requirements specification, which may require further clarification. Each assignment will require communication (test plan, architecture description, etc.) Each assignment will require design and implementation of one or more programs.
You will have to use CVS (the Concurrent Versions System) to store your source files as you work on each assignment. This will be explained in Lab 1. Each student will have their own individual repository, that can also be viewed by the instructors and TAs.
We expect assignments to be done incrementally (using management techniques we will discuss in class). That is, each assignment will be done in a number of steps (each step submitted via CVS), each step progressing toward the final solution. We will be observing your progress, especially your log entries as you proceed toward your solution. The logs will be taken into account during marking.
Assignments will be marked by your lab TA. This will alleviate the frequent problem of not being able to find the person who marked your assignment in order to ask questions about it. Also, the hints that you get from your lab TA about the assignment will have a greater chance of being consistent with the marking of your assignment.
Assignments 1 and 2 must be done individually.
Assignment 3 is longer. It will be done in teams of 2 or 3 (your choice) students, who must be from the same lab section, that is, have the same TA.
There is no mid-term examination in this course. Instead there will be three quizzes of 25-30 minutes in duration. Each quiz will be held in a lecture period. The actual lecture will start immediately after the quiz.
Your final mark will be based on your term work, weighted as follows:
|Laboratory Work (10; equally weighted)||10%|
|Assignments (3; weighted 7%, 10%, 14%)||31%|
|Quizzes (3; equally weighted)||24%|
Note: In order to complete the course and receive a grade, you must obtain more than 50% of the laboratory component marks.
Marks Posting: When ready, you may be able to examine your marks via http://ugweb.cs.ualberta.ca/~c201/marks/ or via Section B1., as appropriate.
Your final grade will be based on our interpretation of the 9 point grading system as defined in Section 23.4 of the Academic Regulations. We do not use a pre-defined function of your final mark to compute your final grade, but instead use our judgement of how your mark reflects mastery of the course material. We believe that this produces a fair evaluation, and our extensive past experience supports this.
We assume that students are familiar with the University Regulations and Information for Students, especially with the Code of Student Behaviour (Section 26 of the UofA Calendar).
Except as described on certain assignments, all work is to be done individually. If work is handed in where, in the opinion of the lab instructor and/or one of the lecture instructors, it is too similar to have been done individually, a grade of 0 will be assigned for that work to all parties in the course that are involved. In such a situation, the individuals who are involved will be notified of this action by email sent to their Unix account. At that time, the individuals should contact the lecture instructor to discuss the matter, especially if they feel the action is unwarranted; contact must be within 48 hours of the sending of any such messages. Comparison of work will not be limited only to work handed in during this term. If it is discovered that work handed in is excessively similar (using the above criteria) to work handed in during a past term, not only will the above penalties apply, but the students in this course that are involved in this will be reported to their Dean. In such a situation, "similarity" will be considered a transitive relation (ie, all students in the course whose assignments are similar to one another's, will be reported to their Dean). The email sent to the student's Unix account will be considered "discussion" of the matter. Failure by the student to reply within 48 hours after sending of the message will be taken as a refusal on their part to discuss the matter further.
Although some students taking CMPUT 379 doubt if they can complete all the assigned work on time, occasionally a few go furhter and break the Students Code of Ethics. In recent years the Dean of each Faculty has dealt increasingly diligently with any cases that arise. Penalties are severe (perhaps a 1F in the course and an 8-month suspension). Given that you learn best by doing, we believe that it is in your best interests NOT to replicate the work of others and submit it as your own. This is easy to check for, since the instructors are authorized to use automated techniques to ascertain the authorship of any piece of submitted work.
Students who require accommodations in this course because of a disability affecting mobility, vision, hearing, learning, or mental or physical health must discuss their needs with Specialized Support and Disability Services, 2-800 Students' Union Building, 492-2281 (phone) or 492-7269 (TTY).
Contact Tony Marsland, firstname.lastname@example.org, about problems with or suggestions about this document.
|Copyright © 1999, University of Alberta. This document was produced using the Apalon markup language, developed by the Software Engineering Research Lab, Dept. of Computing Science, University of Alberta, Edmonton, Canada. Apalon is implemented in Perl, http://www.perl.com. Every computing scientist should know Perl.|