David Keil     Framingham State College         Fall 2008


63.152: Computer Science I Using Java
SYLLABUS


Course description (FSC catalog)

An introduction to problem solving using the Java programming language. The course stresses algorithms, object-oriented programming in graphical environments, documentation, testing, and debugging. Topics include hardware basics and number systems, classes, methods, control structures, types, virtual-machine concepts, Internet and client-server computing, human-computer interaction, social, professional, and ethical issues, and general features of programming languages.

Corequisite: 43.123 College Algebra or minimum score of 2 on the math placement examination.

Overview

Computer science is a scientific discipline with mathematical and empirical concerns. Computation is the manipulation of abstract symbols, but can only occur in the physical world. We use abstraction and reasoning when we design solutions to computational problems, and we test these solutions on actual computing devices.

Computer science is much more than programming, but some concepts of computer science can be presented through computer programming. You will learn by hands-on programming activities, mainly in Java, an object-oriented programming language widely used in the software industry. In each topic of this course, the central focus is designing solutions to problems. Almost all require loops (repetition).

This course looks at a number of languages and encourages a comparison among them. Among these, in addition to Java, are the HTML web markup language; Javascript, which is embedded in HTML web pages; machine and assembler codes; and design notations such as pseudocode, flowcharting, module diagrams, and the UML specification language.

Programming begins with an emphasis on design. We direct attention to design of both algorithms and non-algorithmic, interactive computational processes. Students will learn to trace the operations diagrammed in flowcharts and to design algorithms using flowcharts. The three control structures used in algorithm design are sequences, branches and loops

We will introduce some hardware concepts, centered around the notion of a processor that fetches and executes instructions in machine language. In discussing hardware we also look at the binary (0,1) representation of data.

In this course, you will learn problem specification, solution design, and coding, documenting testing, and debugging of programs.

The notion of data type (e.g., integer, real number, string, class) is part of CS I. The central organizing element of the object-oriented design and programming paradigm, and of Java programs, is the class. A class is an abstract specification of objects as aggregates of properties and associated operations. A method is a Java subprogram that implements operations for a class.

This course is challenging and may be of special interest because it may demand new ways of thinking about problem solving, including logical inference, the creation of data types, and the writing of methods. Exercises will require extensive use of a Java compiler.

This course emphasizes hands-on learning on a computer. Our tools will include a Java compiler (Sun’s Java Development Kit) and a graphical software development environment, BlueJ.

Expected skills on entry

§   Some experience using a computer;

§   Competence in high-school algebra as shown by score of “2” in FSC math placement test, or by passing College Algebra (43.123);

§   Readiness to read a college textbook and ask questions in and out of class.

§   For background material on basics of computing, see www.framingham.edu/faculty/dkeil/iit-matls.htm

Required readings

Textbook: Cay Horstmann, Big Java, 3rd edition (Wiley, 2008), chapters 1-11.

For topics 1-3, chapter-length handouts by the instructor will be used.

Slides: On paper and at course web site.

Reading and studying text material related to the course is a must. The slides and the study questions provide a guide to which concepts are most important to this course. To understand this material, in-depth reading is required as well, reinforced by exercises.

To contact instructor

Office hours (Hemenway Hall 318A):
     M 11:30-12:30 p.m., W 9:30-10:30 a.m.,

Th 2:30-3:20 p.m., others by appointment

Telephone: (508) 626-4724

Email: dkeil@frc.mass.edu

URL: www.framingham.edu/faculty/dkeil

Tutoring

Classroom format

Format will center on group work and problem solving, lecture (with slides), and discussion. Your questions and participation are important. Part of our responsibility is to express doubt.

We will write some program code on the board; other code we will compile and run using a projector. Frequently we will divide into in-class teams to solve discussion problems.

We will normally have one conversation in the classroom and an environment similar to that of a focused workplace governed by attention to business and by mutual respect.

Web aspect of course

This course is listed under http://framingham. blackboard.com. Students are automatically enrolled upon course registration. Course materials are available at the 63.152 Blackboard site via links. The site hosts a private discussion board and a grade book.

Group work

Problems will be assigned to groups, which will post solutions at the Discussion Board. Each student will present at least two problem solutions in class. Quizzes will be based in part on these problems.

Programming project

A Java programming project is assigned that is intended to be constructed step by step as the course proceeds, making use of control structures, methods, arrays, file input/output, and class design. It will provide experience in coding, testing, and documentation of specifications, design, and code.

Basic skills

All students will demonstrate ability to:

1.      Trace a flowchart

2.      Write a flowchart to solve a loop problem

3.      Convert binary numerals to decimal

4.      Write a documented Java program to solve a loop problem

5.      Manipulate numbers and strings in Java

6.      Debug a defective program

7.      Identify loops, branches, declarations, and method calls and definitions in a Java program

Performance objectives

1.      To use the concepts of an algorithm and of the three basic control structures;

2.      To trace a looping and branching computation specified in a flowchart;

3.      To recognize the hardware components of a general-purpose computer and how they interact;

4.      To manipulate binary numerals and describe their applications;

5.      To use the basic vocabulary of structured and object-oriented programming;

6.      To specify, design, compile, test, and debug Java programs;

7.      To write comments to document code;

8.      To declare variables and assign them expressions as values, using standard Java data types;

9.      To code screen output and keyboard input;

10.  To recognize basic syntax rules of Java;

11.  To translate flowcharts and pseudocode into Java;

12.  To design and code Java programs with valid branch and loop statements, including nested loops;

13.  To define and use simple Java classes and methods;

14.  To program with arrays and collections;

15.  To build a simple graphical user interface;

16.  To build a simple application that manages and updates file data.

Grading

Group work                           15

Major quizzes (3)                   25

Basic-skills demonstration      15

Mini-quizzes (8)                     15

Final exam                             10

Programming project              10

Presentations                            5
Participation                         005
                                            100  %

Accommodations

To seek accommodations because of disabilities, meet with the instructor after class or during office hours early in the semester.

 


Course Plan


Dates

Topic

Reading

9/3-9/4

Introduction

 

9/5-9/15

1.  Web-based and event-driven software

Handout: same title as at left

9/17-9/25

2.  Problem solving and solution design

Handout: same title as at left

9/29-10/8

3.  Computer organization and hardware

Handout: “A model processor and its assembler language”

10/6-10/8

Quiz 1 (topics 1-3)

 

10/9-10/17

4.  Introduction to Java

Horstmann, Chs. 1-2
Handout: “Using Java development tools”

10/20-10/24

5. Standard Java data types

Horstmann, Ch. 4

10/27-11/5

6.  Control structures:
Branch and loop statements

Horstmann, Chs. 5-6

11/6-11/14

7.  Methods and classes

Horstmann, Ch. 3

11/17-11/19

Quiz 2 (topics 4-7)

 

11/20-12/1

8.  Arrays and collections

Horstmann, Ch. 7

12/3-12/10

9.  Building GUIS and file-maintenance applications

Horstmann, Ch. 8-11

12/11-12/12

Pre-final quiz

 

 

Final exam (Topics 1-8)

Project presentations