|
Fall 2009
At the end of each week students should be able to:
Week 1
Writing Computer Software
- Describe the steps involved in creating and running a Java program
- Describe the contents of source (.java) and class (.class) files
- Explain what happens (at a high level) when a Java program is compiled
- Explain what happens (at a high level) when a Java program is run
- Describe the difference between compilation and execution errors
- Explain why a Java Virtual Machine (JVM) is required in order to run a Java program
- Describe how bytecode makes Java programs portable
- List the basic steps involved in software development
Algorithms and Design
- Define the term algorithm
- Explain the motivation for doing design before coding
- Make use of variables and operations to perform calculations
- Construct and interpret flowcharts representing sequential, conditional, and looping structures
- Construct and interpret pseudocode representing sequential, conditional, and looping structures
- Use flowcharts and pseudocode to describe algorithmic solutions to simple problems
Week 2
Primitive datatypes, Variables, Identifiers
- List the primitive types supported in Java: int, long, float, double, and char
- Select the most appropriate primitive type to store a given piece of data
- Use the assignment and compound assignment statements
- Describe what happens in memory when a primitive variable is declared
- Describe what happens in memory when an object identifier (reference) is declared
- Describe the differences between primitives and objects (reference variables)
- Demonstrate how an instance of a class is created (new operator)
Java Programming Basics
- Recognize code documentation in source code
- Demonstrate at least two forms of syntax for adding comments to source code
- Replace hard coded constants with named constants
Standard Java Classes
- Demonstrate the use of JOptionPane.showMessageDialog
- Demonstrate the use of JOptionPane.showInputDialog
- Demonstrate the use of String.substring
- Demonstrate the use of String.length
- Use Sun's Java documentation to ascertain if a method is part of a given class
Arithmetic expressions
- Demonstrate proper use of the following arithmetic operators: +, -, *, /, %
- Identify and avoid unintended integer division errors
- Distinguish between binary and unary operations
- Define operator precedence
- Interpret arithmetic expresions following operator precedence rules
- Define and apply typecasting
- Interpret code that makes use of shorthand assignment operations: *=, /=, +=, -=, and %=
Standard input/output
- Use wrapper classes to perform type conversion, e.g., int num = Integer.parseInt("14");
- Explain the source of data associated with the system input buffer: System.in
- Perform standard/console input using the Scanner class
- Explain the destination for data sent to the system output buffer: System.out
- Perform standard/console output using the System.out.println method
Week 3
Selection statements
- Define the functionality of the following relational operators: <, <=, !=, ==, >=, >
- Use relational operators to control program flow
- Define the functionality of the following boolean operators: &&, ||, and !
- Use boolean and relational operators to construct meaningful boolean expressions
- Use boolean expressions control program flow
- Describe the behavior of an if statement
- Describe the program flow through a series of nested if statements
- Use nested if statements to control program flow
- Use a switch statement to control program flow
- Rewrite a switch statement with one or more (potentially nested) if statements
- Explain the purpose of the case, break and default reserved words
Iteration statements
- Interpret code that makes use of the following looping constructs: while, do-while, and for
- Design and write code that makes use of the following looping constructs: while, do-while, and for
- Describe how the following constructs differ: while, do-while, and for
- Rewrite a given while and a for and vice versa
Week 4
More Standard Java Classes
- Define an Application Programming Interface (API)
- Use Sun's Java documentation to ascertain the capabilities of a given standard java class
- Use the Javadoc page for the Math class to perform calculations involving the following mathematic operations:
- Absolute value
- Trigonometric functions (in degrees and radians)
- pi -- ration of the circumference of a circle to its diameter
- xy
- logarithmic functions
- maximum/minimum of two numbers
- Square root
Week 5
More Standard Java Classes
- Use parsing methods in wrapper classes to convert text representations of numbers into numeric format
- Use the toString method in wrapper classes to convert from numeric format into text representations
- Be familiar with methods from the Character class such as isDigit and toLowercase
- Use methods from the String class such as isEmpty, substring, indexOf, etc...
- Generate random numbers
- Use System.out.printf to produce formatted output
Java Packages
- Explain the purpose of a Java package
- List at least two packages that are part of the Java standard library
- Define the term fully qualified name
- Explain the purpose of the import statement
Coding Standards
Week 6
Object Oriented Design / Object Oriented Programming
- Define the following object oriented concepts:
- Object types (Classes)
- Class instances (Objects)
- Instance variables (Attributes/Fields)
- Instance behaviors/actions (Methods)
- Distinguish between classes and objects
- Describe how objects interact with one another by sending messages
UML
- Correctly annotate and interpret fields (name and type) on a class diagram
- Correctly annotate and interpret methods (with arguments and return type) on a class diagram
- Generating class diagram from a verbal description of a class
- Interpret UML sequence diagrams
- Use visibility modifiers to denote the visibility of a field or method
Class creation basics
- Define and use classes with multiple methods and data members (fields)
- Define and use value-returning and void methods
- Properly use visibility modifiers in defining methods and fields
- Define and use class constants
- Understand and apply accessor and mutator methods
- Distinguish between instance variables and local variables
- Explain what makes a predicate/boolean method unique
- Define and use class methods and instance variables (attributes/fields)
- Define and use methods that have primitive data types as arguments
- Understand the importance of information hiding and encapsulation
- Declare and use local variables
- Describe the role of the resevered word this
- Demonstrate use of this to disambiguate object fields from local variables
Week 7
Defining your own classes
- Create and use class constructor methods
- Distinguish between formal and actual arguments
- Define and use methods that have reference data types as arguments
- Define and use overloaded methods
- Call methods of the same class
- Draw and explain memory diagrams that illustrate the instantiation of objects
- Describe the role of the garbage collector
- Compare the equality of two different objects
- Swap the data in two different objects
- Avoid redundant code by calling one constructor from a different constructor
- Understand the implications of acting on an object to which there are multiple references
Week 8
Design Techniques
- Use helper methods to avoid redundant code
- Adhere to the MSOE Software Development Laboratory coding standard
- Simplify complicated algorithms by encapsulating subordinate tasks
- Be familiar with various design approaches such as top-down, bottom-up, and case-based
- Use mechanisms in Eclipse to refactor software
Week 9
Class Members
- Use class variables/attributes appropriately
- Use class methods appropriately
Arrays
- Use an array to store privitive and object types
- Create an array of a given size
- Loop through an array
- Pass an array as an argument
Week 10
ArrayLists
- Use an ArrayList<E> to store objects type E
- Use methods from the ArrayList<E> class such as isEmpty, get, set, add, remove, size, indexOf, and lastIndexOf
- Design and write code that makes use of the enhanced for loop, a.k.a, the for-each loop
- Describe the advantages of an ArrayList<E> over an Array
|