CIS 1068: Program Design and Abstraction [Fall 2008]

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

Additional information about this course can be found on WWW at URL http://www.cis.temple.edu/~ingargio/cis67/.

  • Instructor : Dr. Giorgio P. Ingargiola
  • Lecture Time:
  • Laboratory:
  • Teaching Assistant (both sections):
  • Ombudsperson: Justin Stephan
  • Miscellaneous:

    PREREQUISITES

    TEXT

    DESCRIPTION

    Introduces CIS major students 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 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

    Disastrous performance in either the exams, or in the homeworks, will result in a Fail grade. Class attendance is required. Absence in more than 25% of the classes will result in a penalty of at least half a letter grade. Students who are more than 30 minutes late will not be admitted to class that day. Attendance to the laboratory is MANDATORY. Absence from more than four labs will result in the loss of at least one letter 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 you miss a midterm without previous agreement and without definite proof as to the medical or legal reasons, you 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 completed on time and sent by e-mail to the Teaching Assistant (TA). The homeworks will be graded, commented upon, and returned by e-mail by the TA usually before the next homework is due. Late homeworks will not be accepted by the TA; the instructor may accept them in case of emergencies. You are expected to work and complete all the homeworks on your own. Plagiarism will be severely punished. See the University Policy on Plagiarism and Academic Cheating.

    LABORATORIES

    Laboratories are lead by the Teaching Assistant. Attendance to the laboratory is Mandatory. In the laboratory you will be helped to learn how to use the programming environment: command language, editor, compiler, and debugger. You will be presented examples related to the material discussed in class and you will examine common errors and how to avoid them. Part of the laboratory time will be dedicated to work on your programming assignments. In the laboratory initially we will use command line commands javac, java, text editor. Later we will use an graphic interactive development environment like JBuilder, NetBeans, or Eclipse

    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 and ArrayLists

    Arrays, ArrayLists, 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.