College of Saint Benedict-Saint John's University

CSCI 161
Introduction to Problem Solving and Programming
Fall Semester, 2009


Instructor:      Jim Schnepf                 

Office:             SJU Science Center 209

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.

 

Labs: Attendance at all labs is required; any student who must miss a lab for reasons beyond his or her control must arrange for a makeup time in advance. No credit will be received for unexcused absences. After the first missed lab, each lab missed will lower a student’s final grade by 2 percentage points, in addition to the loss of points incurred for the unexcused absence. A total of 4 unexcused lab absences will automatically result in a failing grade for the course.

 

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 percent­ages:

 

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.


Tentative Schedule (subject to change):

 

Cycle

Topic

Lab

Reading/
Quizzes

1

Concept of an Algorithm


Ch 1 & 2

 

Idea of classes / Programming

Unix

 

 

Mutator Objects

 Using Dr. Java and Book Classes


2

Using Numbers/

Accessor Methods


Ch 3 & 4

 

Selection: if, if-then-else

Placing Objects on the Canvas

 Quiz 1

 

Selection: Switch

 Selection to Choose Shapes


3

Primitive Types


Ch 5 & 6

 

Classes

Data Representation

 

 

Constructors, Methods, & Overloading

 Numerical Data and classes


4

Loops and iteration


Ch 7 & 8

 

Declarations, Scope

Building classes with Conditionals

 Quiz 2

 

Simple Animations & Multiprocessing

Using loops for repetition

Ch 9

5

Communicating with ActiveObjects



 

In-class Exam 1

Active Objects

 

 

More Animations

  Lab Quiz 1


6

Use of Interfaces


Ch 10 & 11

 

Standard GUIs

More Animations

 Quiz 3

 

Events

 Interfaces

 

7

Recursion


Ch 12

 

Numerical Recursion

GUI Components

 

 

More Loops

 Recursive Structures


8

Arrays/Array Lists


Ch 13 &14

 

Collections

Unix and editors

 Quiz 4

 

Multidimensional Arrays

 Lab Quiz 2


9

In-class Exam 2


Ch 15

 

Image Processing

Command line parameters and Applets

 

 

Strings & String Functions

 Image Processing


10

Inheritance & Polymorphism

Protected vs Private

 

Ch 17

 

Overriding Methods/

Parent methods

Manipulating Text

 Quiz 5

 

Design of Class Hierarchies

 Strings


11

Inheritance, String Methods


Ch 16

 

More String methods

Strings II

 

 

Strings & Patterns

 Inheritance

Quiz 6

12

Packages & Exceptions


Ch 18

 

Large Programs and Software Engineering


 Ch 20

 

Review

 Lab Quiz 3

 

Final

       

 ROOM 244

Dec 17th, 10:30