1,844 bytes added
, 20:40, 4 April 2017
'''Course Information''' <br>
The goal of this class is to expose students to advanced programming language ideas, including theory of programming languages, type systems, high-level programming abstractions, and program analyses. We will develop these ideas in three parts.
1. First, we start with a brief introduction to lambda calculus a compact but highly expressive programming language. Due to its simplicity lambda-calculus has been used to encode prototype type systems and program analysis.
2. Second, we spend most of the class studying Haskell, a general purpose, functional programming language. Haskell directly implements the ideas of lambda-calculus and provides a high-level programing language that uses various novel programming techniques, like strong-typing, absence of side-effect, laziness, and monadic programming.
3. Third, we present basic concepts of formal verification via Liquid Haskell, a refinement type checker for Haskell programs that extends Haskell's types with logical predicates to allow for expressive user specifications.
{| style="text-align:left; width: 550PX;"
! Instructor
! Section
! Day & Time
! Location
|- style="vertical-align:top;" |
| Niki Vazou || style="vertical-align:top;" | 0101 || TuTh 9:30am - 10:45am || style="vertical-align:top;" | [http://maps.umd.edu/map/index.html?Welcome=False&MapView=Detailed&LocationType=Building&LocationName=406 CSI 2120]
|}
''' Course Prerequisite(s) ''' <br>
Prerequisite: Minimum grade of C- in CMSC351; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
''' Class Webpage ''' <br>
''' Hours Per Week ''' <br>
''' Languages Used ''' <br>
''' Recommended Prior Experience ''' <br>
''' Projects, Exams, or other Assessments ''' <br>
''' Misc Info ''' <br>