CSCI 6901: Foundations of Programming

Instructor:

Dr. John R. Sullins

Office hours: MWF 1:30 – 2:00, MW 2:00 – 3:30, 4:40 – 5:10, or by appointment

Office: 333 Meshel Hall

Phone: 742-1806

Email: john@cis.ysu.edu

Web site: http://cis.ysu.edu/~john/

   Check the web site regularly, as assignments and announcements will be posted here.


Objectives:

      This course is meant to introduce you to the following:

  1. Basic programming concepts (program control flow, functions, and data types), including object-oriented programming (classes, objects, messages, encapsulation, polymorphism, and exception handling).
  2. Key data structures (linked lists and trees), and their application to programming.
  3. Principles of structured programming (including modular design, debugging, and documentation), and introductory software engineering concepts.

Note that this course is not meant as a comprehensive introduction to all of Java -- the primary objective is to use Java to introduce program design and development.

Prerequisite:

This course will not assume any background in programming. However, be aware that this course will move very quickly at times, as it is the equivalent of 2 to 3 of our undergraduate courses. Please ask questions (either in lecture, phone, or email) if you are not sure how to do an assignment – it is much better than falling behind in a course like this!

Textbook:

Problem Solving with Java (second edition), Eliot B. Koffman and Ursula Wolz, Addison-Wesley.

 

Grading:

Programming assignments

64% 

7 – 8 biweekly assignments

Exam 1

12%

Date TBA

Exam 2

12%

Date TBA

Final exam

12%

Dec. 12

            Last day to withdraw with a "W": Thursday, November 3


Programming Assignments:

The programming assignments will involve the Java language and GUI. The Java 1.5 SDK (software development kit) is available on the lab PCs, and you are strongly encouraged to install a copy on your own PC from the Sun web site (instructions for this are included in the first assignment on the course web page).


Work on these assignments must be your own. See the policy sheet for more details.

 

 

Tentative Course Outline:  

WEEK

TOPICS

CHAPTERS

8/29

Introduction to programming and the Java SDK

1

9/5

Primitive data types, Built-in Java methods and classes

(no class Monday)

2.1 – 2.5

9/12

Basic Java program structure, methods and parameters

2.7 – 2.9, 3.1

9/19

Class and program design

3.2 – 3.5

9/26

Conditions and branching structures

4.1 – 4.5

10/3

Looping structures

4.6 – 4.10

10/10

Arrays, iteration, and linear search

5.1 – 5.6

10/17

Inheritance and polymorphism

6.1 – 6.3, 5.7

10/24

Event-driven programming

6.4, 7.1 – 7.3

10/31

Visual program design

7.4 – 7.9

11/7

Exception handing, file processing

8.1 – 8.3

11/14

Recursion, binary search

9.1 – 9.5

11/21

Linked lists, stacks and queues

10.1 – 10.3

11/28

Trees

10.4 – 10.5

12/5

Software development tools, introduction to software engineering

Appendix A, 6.7 – 6.8

12/12

Final Exam