Previous Up Next

2  CS 115 Goals and assessment

At a high level, the instructor’s goals for this course are to introduce you to fundamental concepts of computer science and to help you develop your ability to design, implement, and test programs. Several skills are needed to successfully write programs, including analytical thinking, systematic experimentation, persistence and patience, organization and time management, interpersonal communication, and effective use of reference material (reading technical documentation, searching the web). We focus on algorithmic thinking and problem-solving: Analyzing requirements, algorithm design, functions and procedural abstraction, pre- and post-conditions, data abstraction, and invariants. We will emphasize techniques for design, such as data driven programming and object orientation.

Along the way we will touch briefly on topics that can be studied in advanced courses, ranging from tools for testing to theories of the limits of computation.

2.1  Coursework and grading

Programming is learned by doing. The main focus of your work will be programming assignments:

There will also be short, unannounced quizzes in class: The purpose is to motivate attendance and to help both you and your instructor gauge your progress. These pop quizzes count as homework scores.

The course score is a weighted average of the following categories.

The course score is normalized to 100 and letter grades are assigned on the usual basis: A = 90–100 B+ = 86–90 B = 80–86 C+ = 76–80 C = 70–76 D+ = 66–70 D = 60–66 F = 0–60

The instructor reserves the right to give a higher grade than your course score, if your performance on later assignments and exams is very strong.

2.2  Exams

The first three exams consist of a one-hour, on-paper component (scheduled by the Registrar as “quizzes”) plus an in-class on-machine programming problem on a different day. The final exam is on-paper only, i.e., no computers. For dates, check the registrar’s page or the week by week outline.

How to prepare for quizzes and exams: attend class, do the reading, and especially do the programming assignments, carefully and thoughtfully. (Obvious!) The purpose of programming assignments is not to turn them in on time—the purpose is to become a skilled programmer, in which case you’ll get good grades on the exams. Get help from the TA and instructor and work hard.

2.3  About the pace

About the pace: It is possible to do quite a lot by copying and tweaking sample code that uses existing software libraries (“APIs”), without really knowing what is going on. Experience shows that programmers need to have a firm grasp of the basic features of the programming language, like assignments, control structure, and method call, in order to avoid being error-prone and inept. Despite the course pre-requisite, we will cover the basics; if you find the class moving too slowly, help a friend and/or challenge yourself with the many exercises in the book/booksite.

2.4  Course outcomes

To assess student progress we focus on key skills that can be demonstrated. Here is the official list of outcomes to be achieved by the end of the semester:

encoding
Explain binary encodings used by Java for integers, real numbers, characters, and images.
execution
Demonstrate the dynamic behavior of Java programs that include array access, conditional execution, looping, object reference, and method invocation (including recursive invocation), by showing successive states of a computation.
exceptions
Interpret the information provided by the stack trace of a thrown Java exception.
coding
Given a design described using pseudo-code and/or flowchart, implement the design as a Java program. Given a short passage of simple Java code, draw the corresponding flowchart.
class
Write a non-trivial instantiable Java class.
state
Explain the use of memory to implement static variables, instance variables, and local variables. Draw the state of the activation stack at any point in a computation.
encapsulation
Distinguish between class members that should properly be private and non-private.
inheritance
Given a Java class, write a non-trivial extended class.
polymorphism
Given a class hierarchy with overlapping members, predict which member will be bound to a particular object reference.
UML
Draw a UML class diagram to describe a set of related Java classes. Given a UML class diagram, write the corresponding classes in Java.
CS 115 Fall 2011          Revision: 1.12 , Date: 2011/12/03 18:57:20
Previous Up Next