Hello, world!

A Programming Language

Two Variables

  • x, y

Three Operations

  • x++
  • x--
  • x = 0 ? L1 : L2

Example Program

(What does it do?)

L1: x++
    y = 0 ? L2 : L1
L2: ...

The above language is “equivalent to” every PL!

But good luck writing

  • … QuickSort
  • … Zelda
  • … Spotify!

So Why Study Programming Languages?

Federico Fellini

A different language is a different vision of life.

So Why Study Programming Languages?

The principle of linguistic relativity holds that the structure of a language affects its speakers world view or cognition.

Or more simply:

Programming Language shapes Programming Thought.

Language affects how ideas and computation are expressed

Course Goals

130 Brain

New languages come (and go …)

There was no

  • Java 25 years ago
  • C# 20 years ago
  • Rust 10 years ago
  • WebAssembly 2 years ago

What is CSE 130 about?

  • Concepts in programming languages
  • Programming paradigms
  • Language design and implementation

Goal: Learn the Anatomy of PL

  • What makes a programming language?
  • Which features are fundamental and which are syntactic sugar?

Goal: Learn New Languages / Constructs

Musical Score

New ways to describe and organize computation, to create programs that are:

  • Correct
  • Readable
  • Extendable
  • Reusable

Goal: How to Design new Languages

New hot languages being designed in industry as we speak:

  • Flow, React @ Facebook
  • Rust @ Mozilla
  • TypeScript @ Microsoft
  • Swift @ Apple
  • WebAssembly @ Google + Mozilla + Microsoft

Buried in every large system is a (domain-specific) language

  • DB: SQL
  • Word, Excel: Formulas, Macros, VBScript
  • Emacs: LISP
  • Latex, shell scripts, makefiles, …

If you work on a large system, you will design a new PL!

Goal: Enable You To Choose Right PL

But isn’t that decided by

  • Libraries
  • Standards
  • Hiring
  • Your Boss?!


My goal: Educate tomorrow’s leaders so you’ll make informed choices.

What is CSE 130 not about?


  • JavaScript in April
  • Haskell in May
  • C++ in June


Who am I?

Ranjit Jhala

  • Professor at CSE since 2005

  • Research: Tools and Techniques to make programs better

The Crew

Teaching Assistants


Course Syllabus

Functional Programming

  • Lambda calculus (2 weeks)
  • Haskell (6 weeks)

Logic Programming

  • Prolog (2 weeks)

QuickSort in C

void sort(int arr[], int beg, int end){
  if (end > beg + 1){
    int piv = arr[beg];
    int l = beg + 1;
    int r = end;
    while (l != r-1)
       if(arr[l] <= piv) l++;
       else swap(&arr[l], &arr[r--]);
    if(arr[l]<=piv && arr[r]<=piv)
    else if(arr[l]<=piv && arr[r]>piv)
       {l++; r--;}
    else if (arr[l]>piv && arr[r]<=piv)
       swap(&arr[l++], &arr[r--]);
    else r=l-1;
    swap(&arr[r--], &arr[beg]);
    sort(arr, beg, r);
    sort(arr, l, end);

QuickSort in Haskell

sort []     = []
sort (x:xs) = sort ls ++ [x] ++ sort rs
    ls      = [ l | l <- xs, l <= x ]
    rs      = [ r | r <- xs, x <  r ]

(not a wholly fair comparison…)

Course Logistics


  • Calendar
  • Lecture notes
  • Programming assignments


  • Go-to place if you have a question or need help


  • 45% Assignments
  • 25% Midterm (Thu Feb 10)
  • 30% Final (Tue Mar 15)
  • 05% Piazza Extra Credit
    • To top 20 best participants


6 programming assignments

  • Released online
  • At least a week before due date
  • On github

Eight late days

  • used as whole unit
  • 5 mins late = 1 late day

Groups of two can do assignments together

  • On ieng6 or your own machine
  • Submit individually (via github)


  • Synchronous, must be done at allotted time and location

  • 2-sided “cheat sheet”

  • The final is cumulative

  • Midterm grade is calculated as midterm > 0 ? max(final, midterm) : 0

    • you get a second chance if you don’t do well on the midterm
    • you must take the midterm and the final

Your Resources

Discussion section

  • Wednesday 08:00-08:50am (see CANVAS for ZOOM)

Office hours

  • Every day, check CANVAS calendar


  • We answer during work hours and office hours (M-F)

No text

  • Online lecture notes and links

Academic Integrity

Programming assignments: do not copy from classmates or from previous years

Exams done alone

  • Zero Tolerance
  • Offenders punished ruthlessly
  • Please see academic integrity statement

Students with Disabilites

Students requesting accommodations for this course due to a disability or current functional limitation must provide a current Authorization for Accommodation (AFA) letter issued by the Office for Students with Disabilities (OSD) which is located in University Center 202 behind Center Hall.

Students are required to present their AFA letters to Faculty (please make arrangements to contact me privately) and to the CSE OSD Liaison Christina Rontell in advance so that accommodations may be arranged.

Diversity and Inclusion


  • Create a diverse and inclusive learning environment
  • Where all students feel comfortable and can thrive.
  • Please let us know if there is a way to make you feel more included
  • In person, via email/discussion boar


  • Students will honor and respect your classmates!
  • Abide by the UCSD Principles of Community
  • Understand that others’ backgrounds, perspectives and experiences will be different
  • Help build an environment where everyone is respected and comfortable.