Giter VIP home page Giter VIP logo

cs162's Introduction

CS162 Programming Languages

Programming Languages are the duct tape, 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. CSE 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 shall focus on three different paradigms -- functional, object-oriented and logic programming as embodied in OCaml, Racket/Rosette and Datalog.

Logistics

Instructor: Yu Feng ([email protected])

TA: Yanju Chen ([email protected]), Yimeng Liu ([email protected])

Class: M,Wed, 9:30am, GIRV-2128

Discussion session: Friday, 9-9:50am, Phelp-3526

TA's office hour: Yimeng Liu (Mon, noon-2pm), Yanju Chen (Wed, 1pm-3pm)

TA Office: Trailer 936 Room 104

Instructor's office hour: Fri, 4pm-5pm, HFH-2157

Textbook (optional): Types and Programming Languages

Date Topic Slides Read Out Due
1/6 Hello, World! lec1
1/8 Lambda Calculus I lec2
1/13 Lambda Calculus II lec3
1/15 A crash course in OCaml lec4 hw1
1/20 MLK Jr. Day
1/22 Datatypes lec5 hw2
1/27 Recursion lec6 hw1
1/29 Higher Order Functions lec7 hw3
2/3 Environments and Closures lec8
2/5 Type Inference lec9 hw4 hw2
2/10 Midterm review lec10
2/12 Midterm exam (9:30-10:45AM, GIRV 2128) hw3
2/17 Presidents' Day
2/19 A crash course in Racket lec11 1 hw5 hw4
2/24 Solver-aided programming with Rosette I lec12 2-3
2/26 Solver-aided programming with Rosette II lec13
3/2 Solver-aided applications & CS162 OSCAR lec14 hw6
3/4 A crash course in Datalog lec15 hw5
3/9 Program analysis in Datalog lec16
3/11 Final review final
3/18 Final exam (8-11AM, GIRV 2128) hw6

Grading

  1. Programming assignments: 50%

  2. Midterm (Closed Book): 20%

  3. Final (Closed Book): 25%

  4. Class Participation: 5%

Useful resources

  1. Racket: https://racket-lang.org/
  2. The Rosette guide: https://docs.racket-lang.org/rosette-guide/index.html
  3. More about Rosette: https://emina.github.io/rosette/
  4. Serval tutorial: https://github.com/uw-unsat/serval-tutorial-sosp19
  5. Hunter: https://fredfeng.github.io/Hunter/
  6. Trinity: https://github.com/fredfeng/Trinity

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
    • looking at solutions from the web, previous versions of the class, or anywhere else.
    • 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: If the teaching staff become aware of any violations of these rules by a student I will initiate the actions described in the Policy on Academic Integrity. If found responsible, the academic sanctions may result in a zero for the assignment, a zero for that portion of your grade, an “F” in the course, among others.

cs162's People

Contributors

fredfeng avatar chyanju avatar yimengliu0216 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.