Welcome to another installment of CS030 Introduction to Computer Science II.
In this second introductory course in Computer Science,
we continue to emphasize thinking in abstractions
and place greater attention on object-oriented design and programming
We will cover abstract data types
and will explore alternative implementations of those abstractions.
We also consider the ways different data structures can be used to solve various problems.
The data structures we will study include stacks, queues, lists, trees and graphs.
In addition to basic data structures,
we will be studying and implementing algorithms that utilize them.
For our primary computer language, we will again use Java.
But it is important to keep in mind
that learning to program in Java is only a side-effect of the course;
the primary goal is to understand abstract data structures
and secondarily to improve your problem solving and program design skills.
Course Materials and Required Reading
- Wayne's Philosophy of education
and his Suggestions for success.
If you have read these before, now is a good time to review them.
If these are new to you, read them.
- Required Textbook (available online):
Java Structures: Data Structures in Java for the Principled Programmer,
by Duane A. Bailey.
Netiquette requires that I link to the Welcome page instead of directly to the book;
two clicks will get you there.
But I will also place a copy on Eureka.
Do explore Professor Bailey's site; he has a wealth of information there.
- Useful resource (available online):
How to Design Classes (Draft),
by Felleisen, Flatt, Findler, Gray, Krishnmurthi, and Proulx.
This text provides a nice bridge between CS010 and CS030.
It may be helpful to read the first 300 pages over the Christmas break.
I use Ubuntu Linux.
I strongly encourage you to do the same.
If you have not already started using Linux, now is a good time to start.
You may continue to use either Mac or Windows operating systems,
but you will be mostly on your own.
and its integrated development environment (IDE),
there is not a platform independent way to develop and run Java programs.
Therefore, you may fare best by using Ubuntu (or another Linux).
- Java: you will need to install a Java JDK (not JRE) on your machine.
I will be using OpenJDK (1.7.0_65 or newer) on Linux;
it may be a good idea to use the same to ensure that I can run your programs.
However, there are multiple alternative options from which you may choose
(but again, you'll be on your own).
- Development environment: you will also need some development environment.
I will be using Emacs to edit Java source
and the command line to compile and run it.
You may also consider using
or some other IDE.
There are many free and commercial products from which you might choose.
Once again, you will be on your own.
- Documentation: you will, at a minimum, want to bookmark a link to the
Java 7 API Documentation.
I recommend that you install the documentation on your own machine
and create a bookmark to your local copy.
This will provide faster and off-line access.
- Time and place: TTh 10:00-11:50am; Winter Hall 110, Computer Lab
- Professor: Wayne Iba
- Office: 308 Winter Hall, 3rd Floor, Math/Computer Science Wing
- Phone: 805-565-6799
- Email: Iba at Westmont dot edu
- Office Hourse: see my teaching page
- Course syllabus
- Class schedule (see syllabus) or visit Eureka