College
of Saint Benedict-Saint John's University
Instructor:
Jim Schnepf
Office:
Phone:
3073
Office Hours: 9:40-10:50
=> day 2, 3, 5
or
by appointment
Homepage: www.users.csbsju.edu/~jschnepf
Text: Java:
An Eventful
Approach by Bruce, Kim B.; Danyluk, A. P.; and T. P. Murtagh
Course Overview: This is an introductory course
and thus assumes NO PRIOR computer programming experience; however,
basic mathematical skills and lots of time are expected! The course is
an intensive introduction to the art and science of problem-solving and
programming. Our department starts students with development of a core
skill for a computer scientist, solving problems by designing
algorithms and implementing them with a programming language.
Currently, the programming language we have chosen to use is Java - a
modern object-oriented language with a large library of classes which
enable one to fairly easily handle tasks involving animations and
designing Graphical User Interfaces (GUI's).
Programming
languages are not really languages in the same way that human languages
are,
but there are many similarities that come up when you are learning one.
For
example, you must learn the vocabulary and structure of the language
(whether
Japanese or Java) and you must learn proper usage. For another,
actually using
the language is critical to learning its proper use.
CSCI
161 is
meant for majors but the skills acquired in learning a programming
language are
quite general and useful in all kinds of disciplines. Thus, CSCI 161 is
of
great value to anyone willing to put in the work. You
will find that learning to program will
require a great deal of time outside of class. You must take each new
piece of
the language and write programs using the new piece until you
understand it
thoroughly. Most people who have taken a programming course will tell
you that
you will have to spend more time than is normal for a course at any
level, let
alone at the 100 level.
Course Objectives: On successful completion of
this course
students should be able to:
·
understand
how to write programs to solve problems using a computer
·
understand
how to design good computer user interfaces that make those programs
easy to
use
·
know
the
basic mathematics and mathematical structures necessary to understand
the
algorithms you develop
Prerequisites:
·
Some skill with mathematics.
·
Lots of time
Skills you will learn in
this class:
·
The syntax (structure) of the programming language Java.
·
The semantics (meaning) associated with program elements and
structures.
·
Logical flow of programs.
·
Data representation and structure.
· Analysis of programs and algorithms for
efficiency.
·
Solving problems by designing algorithms and implementing them
using a
programming language.
·
Recognizing good interface design to make software usable by
people.
Programming Projects:
There will be some programming projects associated with the labs. While the labs are intended to be
collaborative in nature, unless otherwise specified, the projects are
to be
your own work. Projects may be discussed
with other students in the class but what you submit MUST
be your own work in your
own voice.
Assignments
handed in after the due date will be docked for being late. No
assignments will
be accepted more than one cycle after they are due.
Academic Honesty: You must properly attribute
any work or
ideas you use in assignments for this course which are quoted or
derived from
others. Plagiarism includes not only copying the ideas and the written
and
spoken words of others, but also copying or otherwise appropriating
their
computer files as well. Interfering with the work of others including
their use
of computing facilities is also a serious academic offense. I will
report all instances
of plagiarism, cheating, or other academic misconduct to the
appropriate
Academic Dean, and follow the guidelines in the Course Catalog
Any
programming
project that is not your original work will be graded as a zero. A second offence will result in an F for a
grade for the course.
Evaluation: Your final grade for the course will be calculated using the following percentages:
Labs
|
10% |
|
A |
Understand
material at an advanced level |
90%+ |
Lab
Quizzes |
15% |
|
B |
Understand
material at a fully competent level |
80%+ |
Lab
Projects |
10% |
|
C |
Understand
material at an acceptable level |
70%+ |
Quizzes
|
15% |
|
D |
Partial
Comprehension of the material |
60%+ |
In
Class Exams |
20% |
|
F |
Unsatisfactory
Performance |
59%- |
Final |
25% |
|
|
|
|
There will be 6
quizzes during the semester; the
lowest quiz will be dropped. Make up quizzes will not be given. ABs, BCs and CDs will be given for borderline
cases at the instructors discretion.
Special
Accomodations: Student needing special
accommodations or who have special needs are invited to share this
information
with the instructor as early as possible.
Cycle |
Topic |
Lab |
Reading/ |
1 |
Concept of an Algorithm |
|
Ch 1 & 2 |
|
Idea of classes /
Programming |
Unix |
|
|
Mutator Objects |
|
|
2 |
Using Numbers/ Accessor Methods |
|
Ch 3 & 4 |
|
Selection: if,
if-then-else |
Placing Objects on the Canvas |
|
|
Selection: Switch |
|
|
3 |
Primitive Types |
|
Ch 5 & 6 |
|
Classes |
Data Representation |
|
|
Constructors, Methods,
& Overloading |
|
|
4 |
Loops and iteration |
|
Ch 7 & 8 |
|
Declarations, Scope |
Building classes with Conditionals |
|
|
Simple Animations & Multiprocessing |
Using loops for repetition |
Ch 9 |
5 |
Communicating with ActiveObjects |
|
|
|
In-class Exam 1 |
Active Objects |
|
|
More Animations |
|
|
6 |
Use of Interfaces |
|
Ch 10 & 11 |
|
Standard GUIs |
More Animations |
|
|
Events |
|
|
7 |
Recursion |
|
Ch 12 |
|
Numerical Recursion |
GUI Components |
|
|
More Loops |
|
|
8 |
Arrays/Array Lists |
|
Ch 13 &14 |
|
Collections |
Unix and editors |
|
|
Multidimensional Arrays |
|
|
9 |
In-class Exam 2 |
|
Ch 15 |
|
Image Processing |
Command line parameters
and Applets |
|
|
Strings & String
Functions |
|
|
10 |
Inheritance &
Polymorphism Protected vs Private |
|
Ch 17 |
|
Overriding Methods/ Parent methods |
Manipulating Text |
|
|
Design of Class
Hierarchies |
|
|
11 |
Inheritance, String
Methods |
|
Ch 16 |
|
More String methods |
Strings II |
|
|
Strings & Patterns |
|
Quiz 6 |
12 |
Packages & Exceptions |
|
Ch 18 |
|
Large Programs and
Software Engineering |
|
|
|
Review |
|
|
Final |
|
ROOM 244 |
Dec 17th, 10:30 |