GithubHelp home page GithubHelp logo

cs162's Introduction

CS162 Programming Languages

Programming Languages are the bricks, mortar and steel of the information age. Over the last thirty years, a variety of languages with diverse features have been developed, expressive radically different perspectives of the idea of computation. CS 162 is an introduction to these different perspectives, the fundamental concepts of languages, and how modern language techniques and idioms can be used to engineer software systems. For this purpose, we will learn how to build a new programming language, λ+, from scratch, including its operational semantics, type checking, type inference, and correctness.

Logistics

Instructor: Yu Feng ([email protected])

TA: Junrui Liu ([email protected]), Hongbo Wen ([email protected]), Jingtao Xia ([email protected])

Class: Mon, Wed, 2pm, PHELPS 1160

Discussion session: Fri, 9-9:50am, 10-10:50am, and 11-11:50am

Instructor's office hour: Wed, 3:30pm-4:30pm (PLSE LAB: PHELPS 3523)

TA's office hours (location: PLSE Lab=Phelps 3523):

  • Junrui Liu: Fri 2-3pm
  • Hongbo Wen: Tue 11am-12pm
  • Jingtao Xia: Thurs 2-3pm

Textbook (optional): Types and Programming Languages

Date Topic Slides Read Out Due
1/9 Hello, World! & Introduction to λ+ lec1
1/11 OCaml crash course I lec2
1/13 Section 1 sec1 hw1
1/16 (MLK) No class
1/18 OCaml crash course II
1/23 OCaml crash course III
1/25 Introduction to λ+ hw2 hw1
1/30 Lambda Calculus I 11.12
2/1 Lambda Calculus II 8.1,8.2, 9.1-9.3 hw3 hw2
2/6 Operational Semantics I
2/8 Operational Semantics II 10.3 hw4 hw3
2/13 Operational Semantics III
2/15 Type Checking I
2/20 (President) No class
2/22 Guest Lecture 22.1-22.4 hw5 hw4
2/27 Type Checking II 22.7
3/1 Guest Lecture
3/1 Type Inference & Polymorphism I hw6 hw5
3/6 Type Inference & Polymorphism II
3/8 Polymorphism
3/13 Racket & Solver-aided programming
3/15 Course Review hw6

Grading

  1. 6 Programming Assignments: 100%
  2. Extra credit: 2%

Below is a grading system used by CS162 (No curving).

Letter Percentage
A+ 95–100%
A 90–94%
A- 85–89%
B+ 80–84%
B 75–79%
B- 70–74%
C+ 65–69%
C 60–64%
F <60%

Credit: https://en.wikipedia.org/wiki/Academic_grading_in_the_United_States

λ+

Useful resources

You will find the λ+ materials very helpful during this course.

These resources are helpful for learning OCaml:

  1. OCaml From the Ground Up: this is a good step-by-step introduction to OCaml.
  2. Real World OCaml: a comprehensive guide on OCaml: how to use it, the ecosystem and tooling, and common libraries.
  3. The OCaml system: the official user manual for OCaml. Part I is helpful for seeing examples of what OCaml has to offer. You may also want to look at Part III, Chapter 17 for information on how to use the debugger.
  4. OCaml official documentation
  5. Learning OCaml in Y mins

For the extra credit assignment, these may be helpful:

  1. Racket: https://racket-lang.org/
  2. The Rosette guide: https://docs.racket-lang.org/rosette-guide/index.html
  3. SMT-LIB: http://smtlib.cs.uiowa.edu/

Academic Integrity

  • Cheating WILL be taken seriously. It is not fair toward honest students to take cheating lightly, nor is it fair to the cheater to let him/her go on thinking that cheating is a reasonable alternative in life.
  • The following is not considered cheating:
    • discussing broad ideas about programming assignments in groups, without being at a computer (with code-writing and debugging done individually, later).
  • The following is considered cheating:
    • discussing programming assignments with someone who has already completed the problem, or looking at their completed solution.
    • looking at anyone else’s solution
    • Previous versions of the class.
    • leaving your code (for example in an online repository) visible to others, leading others to look at your solution.
    • receiving, providing, or soliciting assistance from unauthorized sources during a test.
  • Programming assignments are not intended to be grade-makers, but to prepare you for the tests, which are the grade-makers. Cheating on the programming assignment is not only unethical, but shows a fundamental misunderstanding of the purpose of these assignments.
  • Penalties: First time: a zero for the assignment; Second time: an “F” in the course.

cs162's People

Contributors

fredfeng avatar technius avatar junrui-liu avatar maemre avatar chyanju avatar yimengliu0216 avatar whbjzzwjxq avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.