CSCI 1300 Computer Science 1: Programming
Spring 2004
Karl Winklmann
 

 

Recent news items are below (all news items)

  1. Thank you

    Thanks everybody for putting in a lot of work during the semester. A special thanks to people who did demos in class.

    Posted: Thursday, April 29, 2004

 

 
 

CSCI 1300: Home page

 
 
 


Project description form | Contents | Schedule and syllabus | Grading policy | People | Programs | MSDOS | Emacs | News archive | Dora (Assignment submission) | www.cplusplus.com | ~main/cs1300/doc/bgi

This page is on the web at www.cs.colorado.edu/~karl/1300.spring04.

Overview

The purpose of the course is for you to learn how to write software. You will need to do a semester-long software project. In the process of doing that project you will learn how to write software and will also learn one specific programming language, C++.

The lectures will lead you through a sample project, discussing material from the book as needed. Your own project needs to end up being a significant variation of the project discussed in class and needs to use all the programming and language features listed in the grading guidelines below.

Staff

Instructor

Karl Winklmann, ECOT 725, karl@cs.colorado.edu, phone 303-492-6380. Office hours Thursday 11-12 and Friday 10-11 (this is a change from previously posted hours). Feel free to make appointments by email at other times. For short questions, it is probably most convenient to catch me before or after class in the classroom.

Teaching Assistants and their office hours

You can go to any of the office hours, no need to stick with your TA.
Michael     Monday 3-5            ECCR 244
Jared       Tuesday 11-12         ECCR 239 or 235
Joseph      Tuesday 2-4           ECCR 252
Michael     Tuesday 3-5           ECCR 244
Robert      Tuesday 6:30-8:30     ECCR 239 (was 244)
Curtis      Wednesday 3-5         ECCR 239
Jared       Wednesday 3-4:30      ECCR 239 or 235
Michael     Wednesday 3-5         ECCR 244
Robert      Wednesday 3:30-5:30   ECCR 244 (yes, back to 244)
Yousef      Thursday 5-7          ECCR 2nn (posted earlier, my mistake, as 3-5)

Recitations

R111    0900AM-0950AM      Wednesday      Joseph Saliba
R112    1000AM-1050AM      Wednesday      Robert Schreiner
R113    1100AM-1150AM      Wednesday      Robert Schreiner
R114    1200PM-1250PM      Wednesday      Jared Seehafer
R115    0100PM-0150PM      Wednesday      Curtis Higgins
R116    0200PM-0250PM      Wednesday      Jared Seehafer
(there is no R117)
R118    1000AM-1050AM      Wednesday      Karl Winklmann / Yousef AL-ALi
R119    1100AM-1150AM      Wednesday      Michael Howe
R120    1200PM-1250PM      Wednesday      Michael Howe
R121    0100PM-0150PM      Wednesday      Michael Howe
R122    0200PM-0250PM      Wednesday      Michael Howe

Textbook

Walter Savitch, Absolute C++, First Edition, Addison Wesley, ISBN 0-201-70927-9. This book is a very good reference for C++. It does cover much more than we need; don't let that bother you.

Computing environment

We will use “GNU Windows 32 Tools with a BGI graphics library.” This is available in the labs and can also be downloaded to a Windows machine if you like. It is free. Download information is at www.cs.colorado.edu/~main/cs1300/README.html.

If you are comfortable with any text editor that's available in the labs feel free to use it to write your programs. Otherwise, you'll have to learn how to use an editor. A good choice would be EMACS, which is included in the above environment.

Saving your work

You need to have a way to create backup copies of your work. Three 3½ inch diskettes would work, one to keep your current files, two more for backups. Or you can use other media, like Zip disks or USB sticks. Losing your work would force you to re-create it, which is especially painful as the assignments build on each other. If you lose your work it is your problem. (When it comes to backing up your work paranoia is a good thing.)

Schedule and syllabus

  Week Class topics + reading assignments Recitations Programming Assignments + Project

1. January 13/15 Overview of course
Basics of C++ (Chapter 1)
Logistics Assignment 1 posted (“Getting information from the user”)
2. January 20/22 Flow of control (Chapter 2) Working on Assignment 1
3. January 27/29 Function basics (Chapter 3) Finishing Assignment 1 Assignment 1 due Wednesday, January 28
Assignment 2 posted (functions for menu and for graphical output, “moving things around”)
4. February 3/5 Parameters and overloading (Chapter 4, Sections 4.1 and 4.2) Working on Assignment 2
5. February 10/12 Arrays (Chapter 5), mouse, icons, buttons [This has changed from earlier versions.] Finishing Assignment 2 Assignment 2 due Wednesday, February 11
Assignment 3 posted (“moving many things around”)
6. February 17/19 Examples, questions, project ideas (no new material) [This has changed from earlier versions.] Working on Assignment 3
7. February 24/26 Structures and classes (Chapter 6)
Separate compilation (Section 11.1) [This has changed from earlier versions.]
Finishing Assignment 3 Assignment 3 due Wednesday, February 25
Assignment 4 posted (“different kinds of things moving and interacting”)
8. March 2/4 Arrays of objects; constructors, friends, operators (Section 7.1 and Chapter 8 through page 335) Working on Assignment 4
9. March 9/11 Constructors, friends, operators, continued Working on Assignment 4
10. March 16/18 Strings and file I/O (Chapter 9 and Section 12.1) Finishing Assignment 4 Assignment 4 due Wednesday, March 17 (not March 10 as posted earlier)
March 23/25  
Spring Break
 
11. March 30/Apr 1 Recursion (Chapter 13)
Pointers and dynamic arrays (Chapter 10)
Testing and debugging (Section 4.3)
Finalizing project description Project description due Wednesday, March 31, in the lab (The completed project itself is due later, see below.)
12. April 6/8 Various useful things (such as command-line parameters, inheritance, templates, exception handling, the Standard Template Library) Working on Project
13. April 13/15 April 13: Various useful things, continued.
April 15: Special Topic (not normally CSCI 1300 material).
Working on project
14. April 20/22 Course evaluation (Tuesday, April 20)
Demos
Finishing project Project due Wednesday, April 21
15. April 27/29 Demos, continued Project demos
   There will be no final exam.

Due dates and late submissions

Assignments and the project are always due Wednesdays at 10PM. You lose 20 points for each day of being late. You lose the whole 20 points at the stroke of 10PM.

Points and grades

Grading is based entirely on the programming project, which starts with Assignment 1 and continues through the semester. There are no written exams; there is no final.

Points are earned in these categories (some of which will be covered by the assignments and all of which need to be in the final version of your project):


  Use of these language features (some of which will have
      to be done as part of the four assignments):

      Keyboard input, text output ........................   40 (Assignment 1)
      Functions, parameters ..............................   40 (Assignment 2)
      Graphics ...........................................   40 (Assignment 2)
      Mouse handling .....................................   40 (Assignment 3)
      Arrays .............................................   40 (Assignment 3)
      Classes and objects
          Constructors ...................................   40 (Assignment 4)
          Input and output operators .....................   40 (Assignment 4)
          Member functions and operators .................   40 (Assignment 4)
      User-defined operators .............................   40 (Project)
      Dynamically allocated arrays .......................   40 (Project)
      File I/O ...........................................   40 (Project)
      Command-line parameters ............................   40 (Project)
      Exception handling .................................   40 (Project)
      Use of library classes .............................   40 (Project)
 
  Useful comments, meaningful variable names, indentation
        that follows the syntax of the language ..........   40 (Project)
 
  Being able to explain all the workings of your program
      and make small modifications quickly in the lab ....  100 (Project)
 
  Sophistication of your project (including how
      different it is from the class demo) ...............  300 (Project)
  _______________________________________________________________
                                            Total .......  1000

   Turning an assignment or the project in late .........   -20 per day


There is no extra credit work.

Getting 900 or more points guarantees you an A, getting 800 or more points guarantees you at least a B, getting 700 or more points guarantees you at least a C, getting 600 or more points guarantees you at least a D, getting less than 600 points will get you an F. +/- grades will be given to raise some grades.

Collaboration

You are very much encouraged to collaborate; explain things to each other and help each other get over any problems; the only constraint is that you must write your own program. It is OK to work out short pieces together; it is definitely not OK to copy a whole page or more. There is one exception to this rule: you may copy and modify code that is posted on the course web site.

Disabilities

If you qualify for accommodations because of a disability, please give me a letter from Disability Services so that your needs can be taken care of.

Religious observances

If there is a conflict between a religious holiday and the class schedule please let me know beforehand. For reference, here is the campus policy on this matter.

Academic misconduct

The University of Colorado Academic Honor Code applies, of course.  


© 2004 Karl Winklmann 5:53 PM, Thursday, April 29, 2004