You are on page 1of 5

SEMESTER AT SEA COURSE SYLLABUS

Discipline: Computer Science


Spring 2009
CS 101: Introduction to Computer Science
Lower Division
Faculty Name: Michael Goldweber

COURSE DESCRIPTION

Introduction to algorithms and computer science for students with little or no programming
experience. Using the framework of an object-oriented programming language this course will
cover problem solving, algorithms and object-oriented design. Topics include data, control,
problem decomposition, abstractions, arrays and an introduction to the analysis of algorithms.

COURSE OBJECTIVES

This course will serve as an introduction to computer science: problem solving, algorithms and
programming. The principle paradigm used is that of object-oriented programming; wherein
data objects are responsible for performing data transforming operations on themselves. Object-
oriented design is used to analyze problems and plan solutions. This includes specification,
design, implementation, and testing. Techniques may include encapsulation, polymorphism,
inheritance, templates, virtual functions, and dynamic storage allocation. Java will be the formal
(i.e. programming) language used.

The successful student will, at the conclusion of the course, have gained greater mastery of the
fundamentals of computer science, be a reasonably proficient beginning Java programmer,
understand the fundamentals of O-O principles and design, and be knowledgeable in the use of
many traditional data structures. The traditional data structures studied will (hopefully) include
stacks, queues, lists, sorted lists, and tables.
TOPICAL OUTLINE OF COURSE

Readings are from Barnes/Kolling and are indicated in parentheses.

A1 - Introductions and introduction to computer science and algorithms: Algorithmics


A2 - Introduction to Java & BlueJ; run and modify existing programs (Chapter 1)
A3 - Create your first class

A4 - Understanding class definitions (Chapter 2)

A5 - Object interaction (Chapter 3)

A6 - Object interaction - II

A7 - Using collection classes; grouping objects together (Chapter 4)


A8 - More on collection classes
A9 - Even more on collection classes
A10 - Project I presentations

A11 - Working with class libraries (Chapter 5)


A12 - Working with class libraries - II

A13 - Working with class libraries - III

A14 - Testing and debugging (Chapter 6)

A15 - Project II presentations

A16 - Class design and inheritance (Chapters 7 & 8)


A17 - Class design and inheritance - II
A18 - Class design and inheritance - III
A19 - Error handling (Chapter 12)

A20 - Polymorphism/Abstract classes (Chapters 9 & 10)


A21 - Polymorphism/Abstract classes - II
A22 - Project III presentations

A23 - Final Exam


Computer science is a “learn by doing” discipline. Hence each logical section/chapter will be
accompanied by a lab exercise. For the most part these lab exercises will be “self-directed,” that is
performed by the students on their own time. At the beginning of each class session when an
assigned lab is due, together, as a class exercise the lab exercise will be reviewed. Students are
encouraged to do a critical self-assessment of their lab progress. The only grades given for lab
assignments will be:
5 - Successful completion
4 - Unsuccessful completion – serious effort evident
2 - Unsuccessful completion – no serious effort evident
0 - No attempt made.

FIELD COMPONENT

The Field Component provides twenty percent of course work.

Computer Science is the study of algorithms. The goal of this field requirement is to aid you in learning
to think algorithmically.

•Each student is required to complete three practica (either Faculty Directed or Independent), at least one
of them before the midterm period.
•An Independent Practicum may be developed as part of a regularly-offered SAS trip, or it may stand
alone.
•If an Independent Practicum is selected, then the student must meet with the instructor prior to arriving
in the port-of-call to discuss his or her approach and objectives.
•All students are required to
1. Keep a journal of their field observations related to the practicum
2. Write a 2 page paper about each of the 3 practica they take.

Journals
Journals should be a record of the students' notes from the field experience related to the practica. The
journal will have a brief summary of the practica the students took, and their experiences relevant to the
topic of the course. In particular you should try to observe a problem with an algorithmic solution.

Paper
The 2 page paper about each field experience should include
- A brief summary of the student’s field notes and a description of the problem uncovered.
- A description of the algorithm you would use to solve the problem.

Examples:
- Given the size of a single brick and the overall dimensions of a pyramid, determine how many bricks
would be needed for the exterior of the pyramid.
- Given a set of ships and their Suez (Panama) canal transit times, what is the most efficient ordering of
the ships through the canal?
- Given a set of cities on wishes to visit in a given country, what is the most efficient order to visit the
desired cities?
- Given a set of actions to be undertaken by a robot (e.g. construction a car) what is the most efficient
order to perform these actions?
SUGGESTED PRACTICA:
ITALY: Rome, Rome and Florence
TURKEY: Istanbul Science Museum (FDP)
EGYPT: Astronomy and the Great Pyramids (FDP)
INDIA: College Visit
THAILAND: Venice of the East and the Grand Palace
VIETNAM: Cu Chi Tunnels
CHINA: Shanghai City Orientation
HAWAII: Pearl Harbor/Arizona Memorial & City Tour
GUATEMALA: Maya Divination Calendar Workshop (FDP)

METHODS OF EVALUATION

The primary methods of evaluation will be the three projects and the final examination. Each
project and the final examination will each contribute 20%. The final 20% will be the from the lab
assignment grades.

Projects, in addition to a completed and documented computer program will also consist of a
“process journal” that each student must keep (and add entries to) as they progress with the project.
These process journals aid students in focusing on the problem solving task in an appropriate
manner. Furthermore, they illustrate to the instructor the problem-solving, problem decomposition,
algorithm creation, and testing methodologies used by each student. For each project, the journal
will compose 5% of the project’s grade.

Furthermore, each project is “open-ended.” The following is an example grading rubric for a
sample project for this course. These rubrics are “published” as part of the project assignment.

In order to earn a:
C: You must have a correctly working program. The single user-controlled avatar (i.e. F) can
successfully be controlled to navigate the game-board; travel up, down, left, and right, without
traveling outside the world's boundaries. (i.e. Attempting to move left while at the left boundary
should do nothing.) The chasing P wander the world randomly until the game ends.

B: The requirements for a C in addition to excellent documentation. Furthermore, your P


should exhibit some "intelligence." Instead of wandering randomly, if a P determines it is "close"
to the F, it purposely moves towards the F.

A: The requirements for a B in addition to some other open-ended improvements. (Here is


your opportunity to think outside the box.) Here are some examples seen in the past. These are
meant as guidelines/suggestions and not as a set of necessary nor sufficient conditions for an A.
- Programming F to move diagonally, or better yet, smoothly through the world instead
of discretely from cell to cell. (To move smoothly through the world requires an application of
trigonometry.)
- Allow some (all?) of your P to periodically move to some random, non-adjacent
location. This is like the P randomly disapparating and then reapparating elsewhere every so
often.
- Place other objects in the world. These objects can act as barriers/walls that one
cannot go through, but must go around. Some objects could be "power" buttons: when the F
travels over them, not only do they disappear but something "good" happens; say one of the P
stays frozen for awhile. (Though one could be sneaky and have some of the good power buttons
actually be bad: say causing an additional P to be instantiated to aid in the chase.)
- The longer F survives, the more P enter the chase.
- Program F to not move towards a "close" instance of a P. (i.e. Ignore a move
command if it moves it within x squares of a P.)

To reach the A level you are highly encouraged to employ one of the following Actor methods:
getIntersectingObjects, getNeighbours, getObjectsAtOffset, and getObjectsInRange - i.e. an
Actor method that requires you to use the List collection class.

A+: Create Pac-Man!

REQUIRED TEXTBOOKS

AUTHOR: D. Barnes and M. Kolling


TITLE: Objects First with Java; A Practical Introduction Using BlueJ 4/e
PUBLISHER: Pearson/Prentice Hall
ISBN #: 0136060862
DATE/EDITION: 2008 – Fourth edition
COST: $85 (Amazon – paperback)

You might also like