Skip to content

danehuang/PAPL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Programming and Programming Languages

This repository contains lecture notes (TypeScript Jupyter notebooks) for a 1 semester upper-level course on programming and programming languages. The basis for the lecture notes is a course taught at San Francisco State University (SFSU) in Fall 2021 and Spring 2022.

Why this Class?

The hope of this class is to expose you to different ways of programming and how different programming languages support these ways of programming. Such a class is often taught using a non-main-stream langauge (e.g.,Scheme). Instead, we're using TypeScript, a superset of JavaScript. The advantage is that you'll come away learning a popular language that is widely used in web programming.

Contents

  1. Language primitives (i.e., building blocks of languages): lecture 02 - lecture 10.
    • pure functions and first-class functions
    • recursion
    • algebraic data-types
    • functional vs. object-oriented programming
  2. Language paradigms (i.e., combinations of language primitives): lecture 11 - lecture 17.
    • domain-specific languages and declarative programming
    • concurrency
    • laziness
  3. Building a language (i.e., designing your own language): lecture 18 - lecture 21.
    • interpreters and transpilers
    • meta-programming

Special Lectures

  1. Lecture 13 explores Sql
  2. Lecture 15 explores Go
  3. Lecture 17 explores Haskell

Why Jupyter TypeScript?

Why not slides? Simply put, slides are a polished product that are not interactive and often do not show the thought proces and trial/error that goes into coming up with a piece of code that works. Jupyter TypeScript enables you to explore concepts with actual code that you can modify.

Requirements

  1. Jupyter Notebook
  2. Node/JS

Usage

  1. npm install (first time)
  2. jupyter notebook

Acknowledgements

  1. Lawrence Kesteloot, Becker Polverini, and Aaron Bembenek.
  2. The students at SFSU.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published