CSE 231            COURSE TOPICS              

A. Digital Computer Systems

   Overview of computer organization

B. Introduction to Problem Solving

   Engage, Visualize, Experiment, Simplify, Analyze, Relax

C. Python beginnings

   Getting Python
   Modules, Interpreter (Python shell)
   Keywords, Operators, Punctuators
   Naming Conventions, Namespaces
   Types, raw_input, type conversion
   Assignment, Multiple Assignments

D. Strings and Booleans

   Strings, methods, functions, slicing, output formatting
   Immutable vs. Mutable objects
   Booleans, Relational Operators, Logical Operators

E. Control: Selection

   Compound statements, Indentation
   if, if-else, if-elif-else

F. Control: Repetition
 
   while, continue, break, else

G. Data Structures I: Lists and Tuples

   Lists (mutable), methods, functions, slicing
   Iteration, for, continue, break, else, range()
   List Comprehension
   2D lists
   Tuples (immutable)

H. Functions

   Definition, Invocation, return,
   Arguments and Parameters: mutable vs. immutable
   Local Objects
   Default and Named Parameters
   Docstrings

I. Files
  
   File objects, modes, open, close, iterator

J. Data Structures II: Sets and Dictionaries

   Sets, operators
   Dictionaries, methods, functions, iterators
   Zip

K. Scope

   Namespaces: qualified & unqualified
   Unqualified
      LEGB: local, enclosing, global, built-in
   Qualified
      'dot' notation

L. Classes: user-defined data type
   
   Object-Oriented Programming
     Encapsulation, Inheritance, Polymorphism
     Reuse, Group Development, Refactoring
   Class vs. Instance
   Methods, Attributes, 'dot'-reference, self
   Constructor: __init__
   Overloading
      Operators: __add__, __sub__, etc.
      Others: __str__, etc.
      Collection Operators:__len__, __getitem__, etc.
      Issues: commutative, mixed types, lhs-rhs
   Inheritance 

M. Exceptions
    
   try, except, else, finally  
   Non-local control: call stack 

N. Other Topics 
   (Sometimes one or two of the following are covered. 
    None were done in Fall 2012.)

  1. Sorting, Searching, BigO  

     Sorting: selection
     Search: linear, binary
     BigO: O(log(n)), O(n), O(n*log(n)), O(n**2), O(n**3)

  2. Testing

     Doctest, Unittest

  3. Recursion