CIS 1068: Program Design and Abstraction
[Fall 2011, Section 003 and Section 004]
Additional information about this course may be found on the Web at
Lecture Time: Mondays, Wednesdays, and Fridays 12:00pm-12:50pm in Tuttleman 302
Instructor : Alexander Yates
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
Teaching Assistant : Liang Lan
- Office : Wachman Hall, Room 303A
- E-Mail :
- Contact Hours :
Wednesdays from 2-4pm,
or by appointment, or take your chances and drop by.
- E-Mail: lanlianghust AT gmail DOT com
- Contact Hours : Mondays, 10am-12pm; Thursdays, 12pm-2pm
- TA's Website
- Our first class is on Monday, August 29 and our last class is on Wednesday, December 7.
- Each student should have a general Temple email address, usually of the form firstName.LastName@temple.edu
- Important student information is accessible from http://owlnet.temple.edu/
- The last day to drop from the course (and get tuition refund) is Monday, September 12.
The last day to withdraw from the course (no refund) is Tuesday,
Students who have previously withdrawn from this course, or who
have already withdrawn from 5 courses since September 2007 may not
- Any student who has a need for accomodation based on the impact of a
disability should contact me privately to discuss the specific situation
as soon as possible. Students with documented disabilities should contact
Disability Resources and Services at
215-204-1280 in 100 Ritter Hall to coordinate reasonable accomodations.
- Freedom to teach and freedom to learn are inseparable facets
of academic freedom. The University has adopted a policy on
Student and Faculty Academic Rights and Responsibilities
(Policy # 03.70.02) which can be accessed through the
- Students should be familiar with the University statement on academic
honesty found at the following link
- The grievance procedures are available online
C or better in Mathematics 1021 (C073) or higher, or placement into
Mathematics 1022 (C074).
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
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.
- Weekly Quizzes : 10% (10 minute tests: Eleven tests, given each week;
only your top ten scores will count)
- Homeworks : 25%
- 2 Midterms : 35%
- Final : 30%
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.
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
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.
University Policy on Plagiarism and Academic Cheating.
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.
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 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, 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.