CSCI 2041


What Comes Next

What once was

Some things we covered in this class:

  • More programming, in a new language

  • The process of evaluating / transforming programs

  • Reasoning about programs

  • Data structures using references (“mutable” types)

  • (a little) version control, using git

  • Modularity and code reuse

Next classes and how they use these skills:

CSci 3081

  • (For some) another new language, lots of coding
  • More on design and reuse
  • More on version control
  • C++ data structures use references/pointers
  • C++ templates are similar to functors

CSci 4011

  • Simplified models of programs
  • Proofs that problems cannot be solved by programs
  • Reasoning about programs as inputs
  • “compiling” programs into other kinds of problems
  • Lots of recursion & induction

CSci 4271W
(Technically after 3081W)

  • Developing Secure Software: evaluating, analyzing programs

CSci 4511W

  • Artificial Intelligence : functional programming

CSci 5106

  • Programming languages
  • More about program evaluation, semantics
  • Coding in SML, Prolog,…

CSci 5161

  • Compilers! (You build one)
  • Parsing, type checking, syntax trees → Code
  • Coding in OCaml

CSci 5801/5802

  • Software Engineering
  • Code design, testing, requirements
  • “specification” and “design” languages


  • Profs. Lu & McCamant – security
    • analyzing programs for vulnerabilities
    • modifying them for protection
  • Profs. Nadathur, Van Wyk, Favonia, Heimdahl – PL
    • automated proofs about programs
    • designing new hybrid programming languages
    • software verification
  • Profs. Zhai and Yew – architecture
    • compilers for new hardware
    • languages for hardware design

// reveal.js plugins