Introduction To CPSC 231
Notes for the required material 
The main purpose of this section is to get students "up and
running" for this course.  Consequently the course instructor should
provide information on all the details required to use the Computer Science
network computers (see "Teaching Tips" below).  A
"hands-on" approach that actually allows students to complete useful
tasks (e.g., login in, viewing and printing files, etc) is often a good idea but this can be done in
lab.  The second part of this section, Introduction to Computer Science is
meant to provide a brief introduction into the different areas of Computer
Science.  Lectures need not cover all the areas listed in the
notes.  However it is highly recommended that they do be tailored to match
the areas of research in the department.  The final part of this section is
a brief introduction into computers: hardware and software.  Since this is
the first introductory course into Computer Science, it is only appropriate that
students get an idea what are the basic components of a computer as well as what
is going on inside of it.   
  -     These notes can be purchased in the Student Union Copy
    Center at cost
-     Introduction to this course and to Computer Science: [PowerPoint] 
  [Acrobat]
-     Introduction to Computers (Leestma & Nyhoff Section
    1.2): [PowerPoint] [Acrobat]
Optional teaching material
  - Unix: If there is sufficient time then the instructor may wish to expand
    upon some of the Unix concepts taught by lab instructor.   This
    can include some of the less common (but still useful) utilities such as 'Grep' or
    'Find'
- History of Computing:  Again another important area but I due to time
    constraints I have listed under the optional rather than the required
    section.  If the instructor has time to cover this material then I have
    some slides that I used from CPSC 203 that may be used: [CPSC
    203 history of computers]
- 2020, by Apple Inc. (~1992, distributed with the video set from the Apple
    Developer's Conference).  It exposes students some futuristic
    technologies and can be useful for getting a class discussion going about
    things that people have been envisioned but cannot be built yet.
- A
    Halloween Pumpkin Phidget with Chester Fitchett, video by Saul
    Greenberg.  It's a fun video that shows how a student in the
    department, Chester Fitchett, took some his research (dealing with
    "Phidget's") during a department Halloween party.   I
    sometimes show this video as a lead-in when I talk about the different areas
    of research in Computer Science.  (While Computer Science is a lot of
    work it can be fun too!)   If there is time I may also show some
    videos that show some actual
    undergraduate student projects built using Phidgets.  Since the
    purpose of these demonstrations is to expose new Computer Science students
    some of the neat projects that have actually been built it is important that
    actual projects from the students in the department be chosen.
Background / Sources of additional information
Unlike the other sections for these course notes I don't have a
formal list of academic references because I either build up much of the
material by teaching first year students over the years.  However, I do
have a few sources that the instructor (or keen student) can go to for more
information:
  - Computer Science Illuminated by Dale N. and Lewis J. (Jones and Bartlett
    Computer Science).  This book provides an excellent summarized
    "bird's-eye" view of some of the topics that many undergraduate
    Computer Science programs will cover.
- The research link for
    the University of Calgary's Computer Science department.  From here I
    was able to follow the links to the different research labs in the
    department to get a quick idea of the latest hot research that was going on.
- Some of the other resources that I drew as background for the different
    research areas in Computer Science include:
  - The course notes for CPSC 481(Human-Computer Interaction I): http://pages.cpsc.ucalgary.ca/~tamj/481/
- The course notes for CPSC 203 (Introduction to Computers - the non-majors
    introductory course - an alternative way of presenting the introductory
    concepts (http://pages.cpsc.ucalgary.ca/~tamj/2002/203)
- The web site for Isys Information Architects Inc (http://www.iarchitect.com)
    , which contains volumes of information on robust and usable computer
    systems as well as many examples of good (in the H.C.I. hall of fame http://www.iarchitect.com/mfame.htm)
    and
    bad designs (in the H.C.I. hall of shame http://www.iarchitect.com/mshame.htm)
- Interactive Computer Graphics: A top-down approach with OpenGL by Angel E.
    (Addison-Wesley).  The Introductory chapters provides a good overview
    of the area of Computer Graphics.
- Readings in Information Visualization: Using Vision to Think by Card S.K.,
    MacKinlay J.D. and Shneiderman B. (Morgan Kaufmann Publishers).  
    Not only does this book discuss in-depth some of the interesting research
    conducted in the area of Information Visualization but it also provides many
    references that the reader can go to for addition information. 
- Artificial Intelligence A Modern Approach by Russell S. and Norvig P.
    (Prentice Hall).  Although much of this book covers material that goes
    far beyond the scope of an introductory Computer Science class the beginning
    chapters provide a good starting point for learning about the field of
    Artificial Intelligence.
- Practical Computer Vision Using C by Parker J.R. (Wiley Professional
    Computing).  A good introductory book about Computer Vision.
- Computers in your future by Pfaffenberger B. (Prentice Hall). 
    Although this book is targeted more towards a non-major's introductory
    Computer Science class, this book provides good explanations and
    illustrations of the basic parts of a computer). 
- How stuff works: www.howstuffworks.com. 
    A great site not only for simple explanations of not only computer-related
    technology but most anything you can think of (from TV's to beer).
- The geekshelter: http://www.geekshelter.com 
    Another technology-oriented site.
- Tom's hardware: 
  http://www.tomshardware.com  Yet another good technology-oriented 
  site.
- Computing Fundamentals by Norton P.  A good computer book that 
  describes the fundamentals to beginners.
- Computer Confluence: Exploring Tomorrow's Technology by Beekman G.  
  Another good book for beginners.
 
Teaching Tips
Note to the course instructor: This section is meant as a guide as to how to
approach each section rather than a definitive cannon for how first year
Computer Science courses should be taught.  Thus it can be used both as a
starting point for new instructors and to provide a bit of insight as to why I
arranged the notes the way that I did.
The introduction sets the stage for the rest of the course.  I usually
begin by covering all of the administrative issues associated with the course
which typically include: 
  - Evaluation methods - how much weighting will be attached to each component
    of the course (exams, assignments etc) as well as how to calculate the overall
    final grade is calculated.
- Examinations - what type of exams will be held (multiple choice, code
    writing, code tracing).  For first year courses I usually have multiple
    choice midterms and a combination of multiple choice, code traces and
    writing of code for the final exam.
- Study tips - since many of the students in the class may be new to post
    secondary and Computer Science classes in particular I provide some general
    study approaches for this class.  Basically it boils down to this,
    Computer Science is very much a "hands-on" discipline.  While
    students will be exposed to many important concepts in lecture it is
    difficult to truly understand the concepts without application, which means
    that they should be writing code, preferably lots of it.   This
    may seem obvious and self-evident to the instructor but I have found some
    students that thought they could get by the course by only reading the
    textbook with only minimal time in front of the computer.  Finally I
    try to be upfront with students and indicate the high workload of the
    typical undergraduate student during their studies here (but also how much
    fun it can be too!  See the section on Additional teaching materials
    below)
- Miscellaneous organization issues - this includes information that second,
    third and fourth year students may take for granted but is essential and
    used on a daily basis.  I make a checklist at the beginning of each
    term (and bring it to class) to make sure that I don't miss anything
    important.  A typical list includes stuff such as: where the computer
    labs are located, which computers are available for their use, what are the
    hours of operation of the lab, how are computer accounts set up and how do
    students get new accounts, what printers can they use and where do they pick
    up their print outs, where they can go for help with different issues
    (course-related, tech-related, online etc), how they can work from home.
After this I then lay out the foundations for the remainder of the term by
briefly discussing what the area of Computer Science is all about and some of
the different areas of research.   This is an important task because
it is not only essential that students who have completed their first year have
at least a rough idea of what Computer Science is about but also I have found
that it helps them understand why they have to learn about some of things that
they do during that initial year. Also I find that taking about some of the
nifty research that is conducted at my university gets students excited and
motivated about the area as well as educating them about the important work that
is done here.  Finally a brief introduction about how and why things work
the way they do in a computer (hardware and software) is in order for the
introductory section.