63.152: Computer Science I Using Java
SYLLABUS
Course description (FSC catalog)
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
Th
Telephone: (508) 626-4724
Email:
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:
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 |
|
|
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 |
|
10/20-10/24 |
5. Standard Java data types |
|
|
10/27-11/5 |
6. Control structures: |
Horstmann, Chs. 5-6 |
|
11/6-11/14 |
7. Methods and classes |
|
|
11/17-11/19 |
Quiz 2 (topics 4-7) |
|
|
11/20-12/1 |
8. Arrays and collections |
|
|
12/3-12/10 |
9. Building GUIS and file-maintenance applications |
|
|
12/11-12/12 |
Pre-final quiz |
|
|
|
Final exam (Topics 1-8) Project presentations |
|