Syllabus, CPSC 331, Winter 2008

home page -  news -  syllabus -  schedule -  assignments -  tutorials -  tests -  java -  references -  Mike Jacobson


about CPSC 331 -  learning goals -  CS background -  math background -  how to succeed -  what to avoid -  assessment

 CS Background

Since students in this course have successfully completed either Computer Science 233, 235, or Computer Engineering 339, familiarity with the syntax of an object-oriented programming language (likely either Java or C++) will be assumed. Students completing the above courses frequently need to review or improve their understanding of the following concepts in order to succeed in CPSC 331.

Recursion

Recursion is generally introduced briefly, either near the end of a first course in programming or near the beginning of a second. It is used heavily in CPSC 331, both because a variety of data structures and properties have recursive definitions and because a variety of algorithms are best described and most easily implemented in a recursive way.

Chapter 8 of the course textbook discusses recursion. Material in Sections 8.1–8.3 will be applied or discussed in CPSC 331. A more extensive introduction to recursion, which may be helpful for students who did not feel that they understood this topic particularly well after completing the prerequisites for this course, is given in Chapter 3 of Data Abstraction & Problem Solving with Java.

Object-Oriented Design and Programming in Java

Students in this course will be expected to apply object-oriented programming concepts and tools that they have learned about in prerequisite courses but have not necessarily used extensively or fully understood.

Java will be used as the programming language in this course. While the programming requirements for the first assignment will be limited, it is still the case that students will need to familiarize themselves with Java quickly if they did not study Java in prerequisite courses.

Additional details about what students should try to learn are included as part of the following discussion of “Recommended References:” See, in particular, the online notes for CPSC 233 that are listed below.

Recommended References

Each of the following references might be helpful for Computer Engineering or Software Engineering students who need to learn more about object-oriented programming and Java or for Computer Science students who wish to review this material. Some of the following references will also be useful for students who wish to develop and test software in Java at home.

  1. Sun Developer Network

    This web site includes the software that students will need for Java development at home as well as abundant documentation, and a set of online Java tutorials include a considerable amount of useful information about object-oriented programming in Java.

  2. Craig Schock
    Online Lecture Notes for Computer Science 233

    Students interested in a reasonably fast review of Java and object-oriented programming should consider these online notes. While they do not discuss the most recent version of Java, most of the information found in these notes is still useful.

    1. Introduction: The key aspects of Java, the Java software development kit (SDK), function of the Java virtual machine, and the Java language and class libraries

    2. Language Fundamentals: Java statements and expressions, fundamental data types, operators and precedence, and the general syntax of Java

    3. Controlling Program Flow: Boolean expressions in Java, the use of the if and switch statements to carry out tests, and the three Java looping mechanisms for, while, and do while

    4. Strings and Arrays: Two fundamental data structures and their methods

    5. Objects and Classes: The object-oriented development paradigm, definitions of objects and classes, explanations of instance variables, instance methods, and constructors

    6. Objects, Continued: Passing parameters to methods, the meaning of “this”, class variables and class methods, object deletion and the garbage collector

    7. Inheritance: The concepts of inheritance and polymorphism, the syntax of inheritance in Java, the Java class hierarchy, and the effect of inheritance on constructors

    8. Abstract Classes and Interfaces: Abstract classes, interfaces, and their importance

    9. Errors and Exceptions: The Java exception handling mechanism, the difference between errors and exceptions, syntax of expressions, and the creation of exception classes

    10. Packages and Class Visibility: Logical class groupings using packages, the environment variable CLASSPATH, inner and anonymous classes and their uses

    11. Collections: The Collections infrastructure in Java, various collection classes, choosing which collection to use, Comparable and Comparators, and Java’s wrapper classes

    It will be assumed that all students are familiar with (or can quickly learn) the material in the first four of the above sets of online notes at the beginning of this course. Students will also be expected to have some understanding of the material in the next six sets of notes, although they will probably have limited experience using this material. A significant part of this course will consider the collections that are briefly discussed in the last of the above sets of notes.

  3. Frank M. Carrano and Janet J. Prichard
    Data Abstraction & Problem Solving with Java: Walls & Mirrors
    Second Edition, Pearson/Addison-Wesley, 2006

    This alternative data structures reference (which could also have been used as the textbook for this course) includes a reasonably short “Review of Java Fundamentals” in Chapter 1, which might be quite useful for students whose prerequisite programming course introduced C++ instead of Java. It also includes an extension discussion of recursion, in Chapter 3, that will be useful for any students who do not feel that they do not understand this concept particularly well.

    Several copies of this book are available on reserve for short-term use at the University of Calgary library. Printed copies can be purchased at Amazon or Chapters.

    Source code (and, possibly, additional supplemental material) for this text is available for download.

  4. Bert Bates and Kathy Sierra
    Head First Java
    Second Edition, O’Reilly, 2005

    This book uses a lighter writing style and a heavy use of graphics that many people find to be helpful when learning new material. It is being used as the textbook for Computer Science 233 this term.

    University of Calgary students can read this book online. Students wishing to purchase a printed copy can do so through Amazon or Chapters.

  5. Walter Savitch
    Absolute Java
    Third Edition, Pearson Addison-Wesley, 2007

    This is a highly regarded reference that has recently been updated. It does not assume that readers have an extensive background in programming (and can be used as the textbook for a first programming course).

    Several copies this book are available on reserve for short-term use at the University of Calgary library. Printed copies can also be purchased at Amazon or Chapters.

  6. Cay S. Horstmann
    Big Java
    Second Edition, Wiley, 2005

    This has been used as the textbook for Computer Science 233 in recent years. Several copies of this text are available on reserve for short-term use at the University of Calgary library.

    Students who like this book and wish to buy a copy should note that a more recent edition is now available. The new edition can be purchased at Amazon or Chapters.


This page last modified:
http://www.cpsc.ucalgary.ca/~jacobs/cpsc331/W08/syllabus/cs_background.html