What is PL?
Welcome to Human-Centered Programming! In this course, we’ll explore the intersection of programming languages and human-computing interaction:
- Programming languages (the sub-field of computer science) is concerned with the mathematical foundations of programming and building abstractions on top of them that make programming easier and safer.
- Human-computing interaction is concerned with understanding how people interact with computers and using that knowledge to build better ways for people to harness computation.
The intersection of the two fields takes programming as its focus, uniting mathematical, cognitive, and social viewpoints on computing to understand how programmers understand and approach their craft.
Programming Languages Research
To begin the semester, we will first try to better understand the concerns of traditional programming languages researchers and designers. When we talk about “programming languages” in a colloquial sense, we are invoking these concerns in our discussion. Watch this video by Michael Hicks of the University of Maryland that gives a flyby of the programming languages field:
On top of discussing the video, we’ll also dive into the Haskell programming language. Haskell is a pure, lazy functional programming language that is a common vehicle for study in the programming languages field. For our purposes, we’ll use Haskell and other languages to gain first-hand experience in working with advanced languages with features that will likely broaden our horizons about what is possible and ideal in programming languages and development tools. We’ll also use our experiences of learning Haskell as a case study in programming usability.
To learn Haskell, we’ll use Lipovača’s Learn You A Haskell for Greater Good, an excellent free online resource.
- Learn You A Haskell for Greater Good, Lipovača.
Read the first two chapters of the book as well as obtain a working Haskell implementation to try stuff out. You can go to the Haskell website:
To find instructions on how to install and use the canonical Haskell compiler: GHC. Do your best to get a working Haskell installation on your own machine although you will likely run into problems. Make sure to bring your setup questions to class so that we can resolve them!