CS1 Course Schedule and Student Assessment Criteria

 

Week

Main Topics

Personal Assessment

1

Overview of computing and programming

Introduction to OOP

Introduction to the software life cycle

Variables in programming

Introduction to Unix

Can you create directories in Unix? using commands in a terminal window?

Can you nagivate your directory structure in Unix? using commands in a terminal window?

Can you create a file in Unix using an emacs?

Can you name and describe the steps of the software life cycle?

Can you describe the difference between a variable in mathematics and in programming?

Can you (did you) set up your e-mail account so that it contains your complete name?

2

Java program structure

Primitive types

Constants vs. variables

Expressions and precedence

Assignment in Java

Memory diagrams for primitve types

Introduction to objects

Can you explain the difference between a variable and a constant in Java?

Can you explain the uses for a constant and can you identify the naming convention (see the coding standards document)?

Can you identify and create legal Java variables?

Can you list and describe each of Java's primitive types and provide an appropriate example of each one?

Can you write mathematical expressions as valid Java expressions?
Can you describe Java's operator precedence rules?

Can you write an assignment statement in Java?

Can you show how a memory diagram for a primitive data type would change when an assignment statement is executed?

Can you describe the difference between declaring a variable and initializing it?

3

References, memory, and memory diagrams

Using objects and classes

Methods: new, invocation, return values

Introduction to Strings

Reading Javadocs

Boolean expressions: relational, logical

.equals vs. ==

Can you explain the difference between a class and an object in OOP?

Can you describe the difference between a reference and a primitive type in Java?

Can you declare a primitive type in Java?

Can you declare a reference type in Java?
Do you know how to allocate memory for a reference type in Java?

Can you draw a memory diagram for a set of Java statements and show how it changes as each statement is executed?

Can you explain the difference between a char and a String variable?

Can you explain why you can not use "==" to determine string equality?
Do you know when to use an equals method rather than ==?

Following the link from the CS1 home page, can you locate and interpret the information given on the String class Javadoc?

Can you invoke various methods on a given String variable?

Can you write a small program that declares and initializes two strings, then invokes various methods from the String class?

Do you know two different ways to concatenate Strings in Java?

Can you explain what is meant by a boolean expression?

Can you write and evaluate relational expressions in Java?

Can you write and evaluate logical expressions in Java?

Can you evaluate a complex boolean expression to determine if the expression is true or false?

4

How to read/trace a program (program flow).

Control structures - conditional statements: if and switch

Compound statements

Program flow: sequential, conditional, method call

Can you identify where a boolean expression might be used in a Java program?

Can you write an if statement given a problem description?

Can you write an switch statement given a problem description?

Can you write an if statement from a switch statement, and vice versa?

Can you read/trace a program, draw and utilize the appropriate memory diagrams, and determine what output is produced?

5

Control structures - iteration: while, for, and do while

Program flow: iteration

Nested loops

Can you explain the behavior of any control structure and trace its execution?

Can you write a loop to solve a problem?

Can you convert any loop structure to any another loop structure, e.g., translate a for loop to a while loop?

Do you know which loop structures are pre tested and which are post tested?

Can you trace the execution of a nested loop?

Can you read/trace a program that uses all of flow structures (sequential, methods, selection and iteration), draw and utilize the appropriate memory diagrams, and determine what output is produced?

6

Constructing classes and methods

Constructors

Parameter passing

Types of variables: class, instance, and local

Unit testing and debugging strategies

Can you explain the limitations of a local variable and can properly (effectively) use local variables when designing classes?

Can you explain the difference between and known when to use instance variables vs class (static variables?

Can you describe the role of a constructor in a class?

Can you describe when you might have more than one method with the same name?

How does Java decide which method to use when you invoke an overloaded method/constructor?

Can you create a class from scratch given a javadoc or some other description of a class?

Can you identify a testing strategy to apply for any classes you have written?
After a problem has been identified through testing, can you identify a debugging strategy to use to find the source of the problem?
After a fixing the bug, what would you do next?

7

Principles of OOD: encapsulation

Scope and life time

Using this

Can you describe the advantages of encapsulation?

Can you describe the relationship between classes and encapsulation?

Can you define what is meant by "scope"? by life time?

Given a piece of code, can you determine which variable (declaration) is being referred to regardless if several variables are declared with the same name in the same piece of code?

If you are reading a piece of code, can you determine what each use of this refers to?

Can you write a piece of code using this appropriately?

8

Arrays: single, double

Testing and debugging arrays

Command line arguments

Can you explain the array data structure, its properties and limitations?

Can you read/trace code containing arrays and determine the output produced?

Can you declare and initialize values in a array and perform simple array operations?

Can you copy an array? resize an array?

Are you comfortable with operations on arrays of objects?

Can you identify a strategy to test and debug array constructs?

9

Software life cycle - design

OOD from specs

Software life cycle - maintenance

Software life cycle - system testing & debugging

Can you list and describe each phase in the software life cycle?

Design:

  • Given a specification, what would you look at to start defining objects in a system and their behaviors?

  • Given a specification, what type of word would likely be become either objects or instance variables?

  • Given a specification, what type of word would likely be become either behaviors?
  • Once you've identified objects of the system, how do you move on to identifying classes?

Testing:

  • Can you define the difference between testing and debugging?

  • Can you explain the difference between black and white box testing?

  • Can you set up appropriate test cases to thoroughly test a unit? a system?

10

Professionalism and ethics

Are you aware of and have you read the DCS and ACM ethics and honesty policies?

Can you list the moral imperatives presented in the ACM code of ethics?

Do you understand the ethical and legal issues of copying copyrighted software?

 

Prepared by Trudy Howles
Last updated by Nan Schaller
October 25, 2004