University of British Columbia

Department of Computer Science

CPSC 152: Principles of Software Development

September-December 2003

 

Introduction

CPSC 152 is a first course in computer science.  The programming language used in this course is C++.  However, this is not just a course on how to program in C++.  The point of the course is to learn introductory computer science concepts (e.g., algorithm design and introductory theory) in addition to learning how to program.  Please note that if you have absolutely no computer experience, you may need to spend extra time in the labs (the TA’s will help you).

 

 

Lectures, People, and Office Hours

Lectures:           

               Section 101: Tuesday & Thursday from 08:00-09:30 in Angus 104

               Section 102: Tuesday & Thursday from 15:30-17:00 in LSK 200

Please note that tutorials and labs do not start until the second week of classes.

 

Instructors:

Section 101: Margaret Dulat (mdulat@cs.ubc.ca); Office: CICSR 185 (building is at 2366 Main Mall)

Section 102: Ed Knorr (knorr@cs.ubc.ca); Office: CICSR 337
              

E-mail:

In classes of this size, it is simply impossible for an instructor to respond to all e-mail requests. Please do not send e-mail for general questions.  Such questions should be posted to the course bulletin board.  However, it is acceptable to use e-mail if the question is of a more personal nature (e.g., illness).

 

Instructors’ Office Hours:

To be announced in class.  The instructors’ office hours will be in their respective offices listed above.

 

 

Teaching Assistants:

Micheline Manske

manske@cs.ubc.ca

Brad Penoff

penoff@cs.ubc.ca

Lior Berry

berry@cs.ubc.ca

Mark Hancock

mhancock@cs.ubc.ca

David Sprague

dsprague@cs.ubc.ca

 

Textbook

The only required textbook is: “Absolute C++” by Savitch, 1st ed., Addison-Wesley, 2002.  It is available at both the UBC bookstore and the Discount Textbooks store (just off of campus).

 

The publisher of the Savitch book is shrink-wrapping (for free) 50 pages of another book (“Engineering Problem Solving with C++” by Ingber & Etter, 1st ed., Prentice-Hall, 2003) with the Savitch textbook.  A small number of copies of the Savitch textbook (and the Ingber/Etter book) are on short-term reserve (2-hour loan) at the Main Library and the Computer Science Reading Room.  Unlike the Reading Room, the Main Library is open on most evenings and weekends.

 


Grading Scheme

A percentage grade will be assigned.  The marks for the course will tentatively be distributed as follows:

 

Labs (10)
Midterm

Final Exam

20%
30%

50%

 

To pass the course, you must obtain at least 50% overall AND at least 50% on the final exam.  In accordance with the usual CPSC department procedures, the highest grade that will be awarded to a student failing the final exam is 45%.

 

If for any reason you are unable to write an exam, you should inform your instructor prior to the exam.  In the case of illness, a doctor’s note will be required.  Other special cases should be discussed with the instructor prior to the exam. 

 

Also, please take careful note of the following drop deadlines for this course:  Tuesday, September 16th (final date for withdrawal without getting a ‘W’ on your transcript) or Friday, October 10th (final date to get a ‘W’ rather than a potential ‘F’ on your transcript).

 

Exams

 

The midterm exam is scheduled for Thursday, October 23rd during class.  The exam will be different for each lecture section, but each class’ exam will be approximately equal in difficulty.  To give students adequate writing space, an additional room is booked for section 102; but section 101 will likely have enough space, as is.

 

The final exam will be scheduled and announced on a date determined by the Registrar’s office.  Please take note of the date and time of the final exam before finalizing your travel plans.  There are no “early” exam sittings for this course, and the Registrar’s office does not consider travel to be a valid reason for deferring an exam.  Students who miss the final exam due to illness, for example, will have to supply a doctor’s note to their home faculty office (usually Applied Science), and will write an alternate CPSC 152 exam in either April or August.

 

 

Tutorials

You should be registered for one tutorial section, although you are free to attend as many tutorials as you like.  Tutorials should be your first line of query (after questions in class) about any aspects of the course material that you do not understand, or that need clarification.  Do not wait until the day before the midterm to ask for help because the TAs could be very busy at that time!  Tutorials do not start until the second week of classes. The schedule for tutorials is as follows:

 

Tutorial

Day

Time

Place

TA

T1A

T1B

T1C

T1D

T1E

T1F

T1G

T1H

T1J

Tuesday

Thursday

Friday

Friday

Tuesday

Wednesday

Thursday

Friday

Wednesday

10:00-11:00

10:00-11:00

10:00-11:00

11:00-12:00

14:00-15:00

14:00-15:00

11:00-12:00

14:00-15:00

16:00-17:00

LSK 462

MATH 229

LSK 460

ANGU 33

CHEM 124

CHEM 124

MATH 104

ANGU 326

MACM 160

 

 

 

Labs

You will be given an account for your course work.  If you have any problems with your account (e.g., if you forgot your password), please contact Moyra Ditchfield in CICSR 389.  You should refer to any handouts given to you at the beginning of the semester for rules on lab use (www.cs.ubc.ca/ugrad/Labs/Policies/index.html), rules on plagiarism and collaboration (www.cs.ubc.ca/ugrad/info/current/Plagiarism.html), and other rules on academic conduct (www.cs.ubc.ca/ugrad/info/current/policies.htm).  These links provide additional detail.  (Note that all of these links can be found by clicking on links at www.cs.ubc.ca/ugrad.  This is a good URL to memorize.)

 

The lab TAs will be able to help you with initial start-up problems and show you how to use the software needed for your first lab.  You must attend the lab that you have registered for, unless you can find someone to switch with and you have the approval of your respective TAs.  Even if you intend to do most of your lab work at home, you should still come to at least the first part of your scheduled lab, just in case the TAs provide announcements, tips, and instructions.  Also, this is the time when you will likely get your marked assignments back.  Since the scheduled labs are only 2 hours long, and most of the labs take longer than this to complete, you should use your lab time wisely.  Try to get as much of the lab completed before the scheduled lab time as possible, so that you only need to consult with the TA on the last details of the lab. When you arrive at the lab, check the whiteboard for notes, because any last minute corrections are likely to be posted there.

 

Labs do not start until the second week of classes. The lab sessions are 1 hour and 50 minutes long.  Please respect your TA’s instructions when he/she asks you to leave to make room for the next lab session.  You should make sure that you leave some time at the end of the lab session for printing out any results.

 

Labs are available during the evening, weekend, and generally anytime that there is no lab scheduled there. Your account will not work on machines in the LSK or CICSR buildings, just in CEME.

 

The lab schedules and due dates are as follows, all in room CEME 2212:

 

Lab

Day

Time

Lab TA

Due Date and Time

TA’s Helper

L1A
L1B
L1C
L1D
L1E

L1F

L1G

L1H

L1J

L1K

L1L

L1M

L1N

L1O

Monday

Monday

Tuesday

Tuesday

Tuesday

Wednesday

Wednesday

Wednesday

Thursday

Thursday

Friday

Wednesday

Friday

Friday

10:00-12:00

16:00-18:00

08:00-10:00

10:00-12:00

14:00-16:00

10:00-12:00

14:00-16:00

16:00-18:00

10:00-12:00

12:00-14:00

10:00-12:00

12:00-14:00

14:00-16:00

16:00-18:00

 

Following Monday 09:45

Following Monday 15:45

Following Tuesday 07:45

Following Tuesday 09:45

Following Tuesday 13:45

Following Wed. 09:45

Following Wed. 13:45

Following Wed. 15:45

Following Thursday 09:45

Following Thursday 11:45

Following Friday 09:45

Following Wed. 11:45

Following Friday 13:45

Following Friday 15:45

 

 

 

Labs will be handed in on paper as well as electronically (except for the introductory lab).  Instructions on how to do this will be presented in lab handouts.  There is a Lab Cover Page that you must download, fill out, and attach to the front of each lab except for Lab 0. Marks for late labs submitted no more than 24 hours late will be multiplied by 2/3.  Marks for late labs submitted 24-48 hours late will be multiplied by 1/3.  Zero marks will be given for a lab received more than two days late.

 

Remember to keep an eye on your disk and print quotas. Failure to observe the limits can result in you being unable to log in, or to print your files. Extensions will not be given for either of these reasons.  Ask your TA's for details on how to check your print and disk quotas.  Periodically, delete files (e.g., executable files, but not C++ source code files), to free up some space.  (Delete the executable files from your homework, but not the source files.  You can always re-create the executable files, as long as you still have the source.) You can buy coupons for printing at the Copyright store in the basement of the Student Union Building.  You should have a handout in class that explains the procedure used to register them--or you can visit URL www.cs.ubc.ca/ugrad and click on the Frequently Asked Questions (FAQ) page, and then click on the note about Print Quota Policy, for example.

 

Check the course outline to determine when your labs are due.  There are marked boxes in the basement of the CICSR building (also called the ICICS building or the computer science building).  This is where your labs are to be handed in. Make sure that you put a title page on each lab that gives your name, student ID number, lab assignment number, and lab section. A title page is available with the online course material that you will access in the next part of the lab.  Please staple your pages together.  Make sure that you put your lab in the correct box; otherwise, it may not be marked!

 

When is Each Assignment Due?

 

You should try to get each assignment completed within a day or two after your scheduled lab ends.  We realize, however, that you are busy with all kinds of courses, and emergencies do come up, so we will allow you to hand in your lab up to 15 minutes before your next week’s lab.  Given this generous allowance, we request that you not ask for additional extensions.

 

Home Software?

If you already have a C++ compiler installed at home, you are of course free to use it to do some work on the labs for the course.  The textbook publisher may include a CD-ROM of an introductory edition of Microsoft’s Visual C++ compiler, which you may use if you wish (note that this compiler does not fully support the ANSI C++ standard, and hence a small number of things may not work exactly as described in class).  The preferred option is the CD-ROM called “Home Suite Home” that has been packaged by the Department of Computer Science.  It includes, among other goodies, a full Unix-like environment that sits on top of Windows 95/98/2000/XP, etc.  This environment includes a C++ compiler.  You can buy the “Home Suite Home” CD-ROM for $5 from the Copyright store in the basement of the SUB, or you can download it from the CS department’s Web pages by following the Remote Computing links on the Frequently Asked Questions page located at www.cs.ubc.ca/ugrad.  You will also find answers/links there to lots of other questions about our computing facilities.

 

Please note that because of the great variety of home PC environments, the TA’s may not be able to provide full technical support for home environments. The course bulletin board may be helpful in this regard, as other students are often able to share their advice and experiences.

 

On-Line Services

You will have a reasonably complete set of services through the World Wide Web.  These services include a set of lecture notes, a course glossary, a set of tutorials covering C++ and your computer environment, and a bulletin board.  Please note that the WebCT bulletin board is required reading for this course.  You should plan to read new messages every day or two. Your undergrad account will allow you to access WebCT, beginning a day or two into the course.  (For the first day or two, your account may be denied access.  This is temporary, until we get the course content, etc. brought up to date.)

 

You’ll get an overview of the Web and an introduction to the on-line services during your first lab.  If you want to browse the material on the Web in the meantime, sign on to your account and start up a Web browser application, such as, Internet Explorer, Mozilla, or Netscape.  Type the following URL:

 

http://www.webct.ubc.ca

 

You will be prompted for a user name and password.  Enter either: (a) your NetInfo account ID and the corresponding password, or (b) your student number and the corresponding PIN number.  You should then see a page that lists those courses in which you are registered that have a corresponding WebCT course.  Click the “CPSC 152: Principles of Software Development” link to access the on-line resources for this course. 

 

The course notes available on-line are reasonably complete, but they are also concise.  Expanded examples and notes will be presented during lectures.   If time is short, some parts of the on-line course notes may not be covered in class and will therefore not be examinable.  The on-line notes are pretty good and are always undergoing (minor) changes/additions.  We hope that you will point out errors and omissions so that the notes can be updated.

 

The WebCT bulletin board will be used to mention important material that may not be mentioned in class.  You can definitely use the bulletin board to ask questions about the lectures or labs.  The TAs and instructor will check the board daily, as will most other students, so you can expect prompt replies.  If you know the answer to a particular posting, feel free to respond to it.  The idea of a bulletin board is to facilitate communication, thereby making everyone’s course experience better.  Note that the bulletin board is divided into a number of forums (“Main” for lectures and miscellaneous questions, “Lab 0” for Lab 0, “Lab 1” for Lab 1, etc.)  Before creating your note, choose the correct forum to post to; this will be pretty obvious from the context of your note.

 

Important: The bulletin board is where all general queries should be posted.   The TA’s and instructors will not answer queries of a general nature by e-mail.  Personal questions (ones that you do not want anyone else to see; for example, regarding illness, family emergency, etc.) may be sent to the instructor or a TA by e-mail.  Never post your program on the bulletin board!

 

Academic Conduct … please read!

Submitting the work of another person as your own (i.e. plagiarism) constitutes academic misconduct, as does communication with others (either as a donor or recipient) in ways other than those permitted for labs and exams.  Specifically, for this course, the rules are as follows:

 

o       Labs are to be done alone.  You may not submit code not written by you, and you may not share your work with others.  There is one exception: you may build your solutions on sample code made available by an instructor or TA.

 

o       You are, however, encouraged to discuss the approach you used to solve a problem with your fellow students.  This discussion must not involve any coding details -- only the approach used.

 

Violations of these rules constitute serious academic misconduct, and they are subject to penalties ranging from a grade of zero on a particular assignment to indefinite suspension from the University.  Years ago, it used to be the case that students got a mark of zero for the assignment being plagiarized; however, the tendency of the university is now going towards failure for the course, or possible suspension from the university. It is simply not worth turning in someone else’s work.  Note that you will get part marks for turning in your own work (on time), even if it is incomplete.

 

More information on procedures and penalties can be found in the Department’s Policy on Plagiarism and Collaboration (www.cs.ubc.ca/ugrad/info/current/Plagiarism.html) and in the University Calendar.  If you are in any doubt about the interpretation of these rules, consult your instructor or TA.

 

Note about updates to this document:  An on-line version of this course outline is available on the WebCT CPSC 152 Homepage.  The on-line version will be updated as necessary throughout the semester.  For example, once the TA assignments have been finalized, we will state who does which tutorials and labs.