Send Close Add comments: (status displays here)
Got it!  This site uses cookies. You consent to this by clicking on "Got it!" or by continuing to use this website.nbsp; Note: This appears on each machine/browser from which this site is accessed.
CS340 content by topic


1. CS340 content by topic

2. Introduction and background
  • Introduction to computer science
  • Copy-update problem
  • Programming languages
  • Automata theory

  • 3. Computer science and thinking
  • Top-down vs. bottom-up
  • Meta prefixes
  • Abstraction and psychological chunking
  • Problem solving and decision making
  • Problem solving for document writing
  • Self-similarity and fractals
  • Myers-Briggs personality profiles

  • 4. Counting, bases, conversion
    Counting is very important and we will need some of the code examples for programming language example use.
  • Cards for mind-reading card trick
  • Counting: introduction
  • Counting: importance
  • Counting: bases 2, 10, and 16
  • Counting: Decimal to binary
  • Counting: Data representation
  • Counting: Algorithms
  • Counting: Base conversions
  • Counting suffixes
  • Online base converter
  • Binary and hex dumps (added 2019-09-09 from what was done in class on 2019-08-29)
  • Decimal to binary: program examples (added 2019-09-09)
  • Counting exercise/quiz

  • 5. Hello world, programs that write programs
  • Programs that write programs
  • Hello world in many languages

  • 6. Characters and character data
  • Character data
  • Character data
  • Pipes and redirection

  • 7. Logic and truth tables
  • Two-valued logic: Introduction
  • Two-valued logic: Operators
  • Truth tables: manual method
  • DeMorgan's Laws
  • Logical expression definitions
  • One-time pads
  • NAND operator
  • NOR operator
  • Boolean operations using integers
  • Truth tables: programmed method
  • Bit buckets

  • 8. Tree representation and traversal
  • Logical expressions
  • Associativity for expressions and trees
  • Tree representation and traversal
  • Tree traversal question notes
  • Tree evaluation

  • 9. Recursion and self-reference
  • Recursion introduction
  • Towers of Hanoi
  • Towers of Hanoi in various languages
  • Towers of Hanoi: code complexity \
  • Towers of Hanoi: Recursion to iteration
  • Towers of Hanoi: Recursion to iteration 2

  • 10. DSL: Graphviz and trees
  • Domain specific languages
  • Graphviz: dot (getting started)
  • GraphViz: expression trees
  • Array diagrams (using GraphViz)

  • 11. Lists and dictionaries
  • Postfix code to tree
  • Lists
  • Dicts
  • JSON

  • 12. DSL: Regular expression pattern matching
  • Regular expressions
  • Regular expressions: Tester
  • Regular expressions and printf
  • Printf strings

  • 13. Tree representation and traversals

    14. Abstraction: String rewriting
  • The C language preprocessor
  • Code and data driven programming
  • Data driven programming (started but incomplete)
  • String rewriting using multi-line macros in C
  • String rewriting systems
  • String rewriting in JavaScript
  • String rewriting examples
  • String rewriting systems: case study
  • Case study: String rewriting

  • 15. Eager and lazy evaluation
  • Towers of Hanoi: eager moves
  • Lazy evaluation
  • Iterators and generators

  • 16. Constraint logic programming: Prolog
  • Logic programming overview
  • Logical expressions using Prolog
  • Prolog examples using TuProlog
  • Introduction to logic programming
  • Prolog: Iteration and loops
  • Prolog: Logical variables
  • Prolog and Datalog
  • Logic programming: more  Prolog examples
  • Constraint processing
  • Linear programming overview (just for brief overview)
  • rmsDSL for permutations
  • DSL for Prolog permutations
  • Prolog: Puzzles
  • Alphametic puzzles
  • Encoding and solving logic puzzles
  • Practical examples of Prolog
  • Case study: Rules based advising system
  • Rules for COBA courses (example from 2007)
  • TuProlog IDE
  • Prolog tree traversal
  • Lists: Prolog, Lisp, etc.
  • Family trees in Prolog
  • Nontrivial logic puzzle (similar to assignment puzzles)
  • Prolog: assert and retract
  • Prolog: Terms
  • Prolog: control flow compiler
  • Prolog: base conversion transformation
  • Permute DSL for nontrivial puzzle
  • Prolog: Call by pattern

  • 17. Operational semantics, control flow, compilers
  • Programming semantics: introduction
  • C: Goto statement
  • Goto statement harmful
  • Arrays: maximum value (in class practice quiz example)

  • 18. Grammars and parsing, scanners, lexing
  • Operator no-precedence parsing

  • 19. Code generation
  • Postfix traversal to generate code
  • Stack-based code execution
  • Compiler generated code: introduction
  • Comipler generated code: Investigations
  • Abstract interpretation

  • 20. Axiomatic semantics, correctness and verification
  • Program testing
  • Program correctness
  • Axiomatic semantics: assertions
  • C: Assertions
  • Axiomatic semantics: assignment statement
  • Verification vs. validation
  • Axiomatic semantics: Assignment statement exercises (for practice, try them)
  • Axiomatic semantics: example and proof
  • Array initialization: proof
  • Quotient and remainder: proof

  • 21. EBNF and BNF grammars, syntax diagrams
  • EBNF
  • EBNF to BNF
  • EBNF: Some Python constructs

  • 22. Bugs, failure and recovery, exception handling
  • Bugs and software systems
  • Failure and recovery
  • Exception handling

  • 23. Specific programming languages
  • The C programming language
  • The C++ programming language
  • Alan Kay and Smalltalk
  • Pascal and related programming languages
  • The Java programming language
  • The JavaScript programming language
  • The Lua programming language
  • The Python programming language
  • The PHP programming language
  • The Ruby programming language

  • 24. Puzzles
  • The light switch problem
  • Traveling train puzzle