Skip to content

epson121/ProgrammingLanguages

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Programming Languages

About the course:

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language -- and in learning new ones.

This course is neither particularly theoretical nor just about programming specifics -- it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it.

Code:

  • Week1
  • SML functions (and tests) related to calendar dates. Checking which date is older, map functions on list of dates etc.
  • Week2
  • SML code for "name substitutions" (mapping functions to list elements, pattern matching, etc.), code for a variation of solitaire game
  • Week3
  • SML functions doing various things, practice of higher order functions and currying
  • Week4
  • No code, midterm exam was given instead
  • Week5
  • Racket code - practice of streams and other racket related things
  • Week6
  • MUPL (Made Up Programming Language) interpreter written in Racket (expression evaluation, closures, functions etc.)
  • Week7
  • Ruby code - Creating enhancements to given Tetris game code. Adding new pieces, cheating etc.
  • Week8
  • SML and Ruby - complete and extend two implementations of an interpreter for a small “language” for two-dimensional geometry objects