CIS 1068: Program Design and Abstraction [Fall 2011, Section 003 and Section 004]

Prerequisites, Text, Description, Grading, Exams, Homeworks, Laboratories, Outline.

Additional information about this course may be found on the Web at
http://knight.cis.temple.edu/~yates/cis1068/au11/.

Lecture Time: Mondays, Wednesdays, and Fridays 12:00pm-12:50pm in Tuttleman 302
Laboratory (Section 003): Tuesdays from 12:00pm to 1:50pm in Wachman 104
Laboratory (Section 004): Thursdays from 2:00pm to 3:50pm in Wachman 207

Instructor : Alexander Yates Teaching Assistant : Liang Lan Miscellaneous:

PREREQUISITES

TEXT

DESCRIPTION

CIS 1068 introduces CIS majors to computers, computer programming, and problem solving using programs. Topics covered include the general characteristics of computers; techniques of problem solving and algorithm specifications; and the implementation, debugging, and testing of computer programs. The goal is to learn to solve small programming problems and to write their solution as high quality small programs in Java.

GRADING

Percentages given here are approximate, and the instructor may change them during the course. Disastrous performance in either the exams, or in the homeworks, will result in a Fail grade.

EXAMS

The exams are closed book. Their content is cumulative, i.e. they address the material covered up to the day of the exam. If a student misses a midterm for an emergency [as agreed with instructor], there will be no makeup exam: the final will become proportionally more important. If a student misses a midterm without previous agreement and without definitive proof as to the medical or legal reasons, he or she will get a zero for that exam. Weekly 10-minute tests that are missed will not be made up. The final exam is mandatory on the scheduled day.

HOMEWORKS

You will be assigned one homework each week. Each assignment must be sent by e-mail to the Teaching Assistant (TA). The homeworks will be graded, commented upon, and returned by the TA usually before the next homework is due.

Lateness Policy: Computer programs can be fickle and finicky. Tracking down bugs may take an unexpectedly long time, especially for beginning programmers. Students will have three (3) late days to use on homeworks during the course of the semester, in case tricky bugs crop up. If a student does not hand an assignment in by the due date and time, the TA will still accept the assignment during the next 24 hours, if the student has any late days left. Each late day cannot be subdivided; if an assignment is late, it takes a whole late day to allow it to be accepted. Once all three late days have been used, late assignments will not be accepted by the TA. Any exceptions must be approved by the instructor.

You are encouraged to discuss homework problems with your peers, and to help one another debug programs. However, all algorithms you devise, code you write, and anything else you might turn in should be entirely your own work. Plagiarism will be severely punished. See the University Policy on Plagiarism and Academic Cheating.

LABORATORIES

During labs, the TA will help students learn and practice the programming skills that are discussed during lecture. The TA will teach students how to use important software, including the shell, text editors, the Java compiler, the debugger, and an integrated development environment (IDE). Students will be presented examples related to the material discussed in class and will examine common errors and how to avoid them. Part of the laboratory time will be dedicated to work on programming assignments.

OUTLINE

Introduction to computing

Computer history, overview of hardware, overview of software, language processing, introduction to the operating system and to the program development environments you will use in this course.

Problem solving

Problem solving and programming. Software development phases: problem statement, analysis, design, implementation, and testing. English as a [pseudo] programming language. Overview of Java, classes and instances, declarations, executable statements. Primitive data types. Strings. "Main" class and "Worker" classes. Class vs. instance methods and data members. Object references: static vs. dynamic type. Overloading. Simple Input/Output.

Decisions, if statement, switch statement

Boolean expressions, decisions, if statements, tracing an algorithm, nested if statements, switch statement

Repetition and loops

Repetition in programs, while loop, accumulating a sum, sentinet loops, for loop, debugging programs with loops

Introduction to program components

Packages, classes, methods. Parameter passing: by value, by reference. Scope of identifiers. Mode of parameters: in, out, in out. Using stubs and drivers.

Arrays

Arrays, searching, sorting, and merging.

Reasoning about programs

Complexity of computation. Loop invariants. Preconditions and postconditions of functions.

Inheritance and Class Hierarchies

Class hierarchies and inheritance. Interfaces. Polymorphism. Programming by Contract.

Exceptions, Streams, and Files

Exceptions. Try and catch blocks. Persistence: text files.