CS 4240 Course Outline

CS 4240 Course Outline

The Big 6

You are in here because you took introductory programming or via placement. We expect you to be familar with the following.

  1. Variables and Objects Objects have state and behavior, and variables are identifiers [symbols] that point at them. Objects represent data that come in different species [types]. A table of all variables and the objects they refer to is called a symbol table. The process of binding a variable to a value is called assignment. Combinations of variables and operations are called expressions. When an expression is evaluated, the values of all variables in it are fetched from a symbol table and substituted into the expression.
  2. Functions Functions are entities that remember procedures. They have inputs (arguments), outputs (a return value), and side effects, which are items that persist beyond the lifetime of the function. Side effects can include output printed to the screen, items places in a file, or other changes to the internal state of a program. Functions are a means by which we decompose complex problems into simpler ones in a process called modularization.
  3. Scope and Delimitation This is the business of knowing where things begin and end. Included in this is the lifetime of variables and objects.
  4. Conditional Logic This permits programs to "make decisions" depending upon their internal state, which consists of all variables being stored and their values.
  5. Iteration This permits programs to do a task repeatedly and to know when and if to start and when to end.
  6. Containers These allow you to store a collection of related data under a single name. Different containts here different rules for access and modification of their contents.

Course Outline

  1. Getting Started
    1. Installing and Configuring Python 3
    2. Installing and Configuring Java
  2. The Python Type System
    1. Python Scalar Types
    2. Variables and Assignment
    3. Python Objects
    4. Python Sequence Types
    5. List Behaviors
    6. Hashed Types
  3. Python Boss Statements
    1. Python Boss Statements
    2. Functions
    3. Python has Function Scope
    4. Conditional Logic
    5. The Stack and the Heap
    6. Recursion
    7. Modules and Using the Standard Library
  4. Repetition and Iteraton
    1. Iterables and Definite Loops
    2. FileIO and its Applications
    3. Exceptions and Errors in Python
    4. Definite Looping with while
    5. Starguments and Keyword Arguments
    6. Stateful Functions: generators
    7. Recursion
    8. Modules and Using the Standard Library
  5. Introducing Java!
    1. The jshell REPL
    2. The Mechanics of Writing Programs
    3. What is the JVM?
    4. Python Classes and Objects
    5. Java Classes and Objects
    6. Java Primitive Types
    7. Java and Python class examples
  6. Classes and Objects
    1. Java Object Types
    2. Java Strings and the Java API Guide
    3. The Wrapper Classes
    4. State and Constructors
    5. Method overloading and "faking it" in Python
    6. this and self
    7. Accessors and Mutators
    8. Java Variable Scope
  7. Python → Java
    1. Java Data Structures: Arrays and Lists
    2. Conditional Execution in Java
    3. BigInteger
    4. Recursion in Java
    5. Starguments for Java
    6. static and final
    7. Method overloading and "faking it" in Python
    8. this and self
    9. Accessors and Mutators
    10. Java Variable Scope
  8. BigFraction: Buildling an API
  9. Interfaces and Inheritance
    1. Interfaces as Contracts
    2. Polymorphism and Subtypes
    3. Inheritance
    4. The Deadly Diamond and the One-Parent Rule
    5. Extending Interfaces
    6. Functional Interfaces
    7. Lambdas and Type Inference
  10. Files and Exceptions
    1. Exceptions and the Throwable subtree
    2. Throwing exceptions
    3. Checked vs. Runtime Exceptions
    4. The Path interface and static method of
    5. Reading Text Files
    6. Writing Text files
    7. Reading and Writing Binary Files