All Projects → barghouthi → Cs704

barghouthi / Cs704

CS 704 course website - Principles of Programming Languages

Labels

Projects that are alternatives of or similar to Cs704

R
Exercises (incl. analyses) with R language (math+statistics)
Stars: ✭ 462 (+1440%)
Mutual labels:  course
Machine Learning Book
《机器学习宝典》包含:谷歌机器学习速成课程(招式)+机器学习术语表(口诀)+机器学习规则(心得)+机器学习中的常识性问题 (内功)。该资源适用于机器学习、深度学习研究人员和爱好者参考!
Stars: ✭ 616 (+1953.33%)
Mutual labels:  course
Csc deeplearning
3-day dive into deep learning at csc
Stars: ✭ 22 (-26.67%)
Mutual labels:  course
Ml Mipt
Open Machine Learning course at MIPT
Stars: ✭ 480 (+1500%)
Mutual labels:  course
Pl Compiler Resource
程序语言与编译技术相关资料(持续更新中)
Stars: ✭ 578 (+1826.67%)
Mutual labels:  course
Kubernetes Complete Course
Kubernetes 完全教程
Stars: ✭ 651 (+2070%)
Mutual labels:  course
Data Driven Web Apps With Flask
Course demo code and other hand-out materials for our data-driven web apps in Flask course
Stars: ✭ 388 (+1193.33%)
Mutual labels:  course
Python plotting snippets
Tips and tricks for plotting in python
Stars: ✭ 28 (-6.67%)
Mutual labels:  course
Course Crawler
🎓 中国大学MOOC、学堂在线、网易云课堂、好大学在线、爱课程 MOOC 课程下载。
Stars: ✭ 611 (+1936.67%)
Mutual labels:  course
Machine Learning Curriculum
💻 Make machines learn so that you don't have to struggle to program them; The ultimate list
Stars: ✭ 761 (+2436.67%)
Mutual labels:  course
T 414 Aflv
T-414-ÁFLV: A Competitive Programming Course
Stars: ✭ 488 (+1526.67%)
Mutual labels:  course
Learn Fp
learn-by-doing course/tutorial for functional programming on scala
Stars: ✭ 548 (+1726.67%)
Mutual labels:  course
Mastering Pycharm Course
Course demos and handouts for Talk Python's Mastering PyCharm course
Stars: ✭ 700 (+2233.33%)
Mutual labels:  course
Hypatia
A JavaScript open source LMS (eLearning platform) for MOOCs and online courses
Stars: ✭ 478 (+1493.33%)
Mutual labels:  course
Course julia day
Notes for getting to know the Julia programming language in one day.
Stars: ✭ 23 (-23.33%)
Mutual labels:  course
Courses
🚀 录制的视频课程资料
Stars: ✭ 433 (+1343.33%)
Mutual labels:  course
Rest Api Sections
A small repository of projects built in my course, REST APIs with Flask and Python.
Stars: ✭ 645 (+2050%)
Mutual labels:  course
Course
Slides and Jupyter notebooks
Stars: ✭ 29 (-3.33%)
Mutual labels:  course
React Intro
Исходный код для курса "Знакомство с React"
Stars: ✭ 15 (-50%)
Mutual labels:  course
Typescript Fundamentals
👨‍🏫 Mike's TypeScript Fundamentals Course
Stars: ✭ 732 (+2340%)
Mutual labels:  course

Principles of Programming Languages

CS 704 | Spring 2021

τ τ'
When Tu/Th 1-2:15
Where Online (Zoom via Canvas)
Who Aws Albarghouthi
Office hours Thu 215-300 in CS 6363

All notes and assignments wil be posted on this website.

Submission of assignments and course project deliverables is via Canvas.

Anonymous feedback can be submitted on this Google form

Course description

This course covers a range of topics in programming languages, including lambda calculus and type theory, functional programming, logics for encoding programs, and automated verification techniques.

The goal is to expose students to a range of mathematical and practical tools for reasoning about programs.

Lectures

The following will be populated as the course progresses:

Week 1 (Jan 25) Lambda calculus

  • Tue Welcome to the course / Intro to the beautiful lambda calculus

  • Thu Computing with lambda calculus

    • notes
    • Chs. 5 and 6 of TAPL

you might also find helpful the notes from Sampson's Cornell class—this and this

Week 2 (Feb 1) Programming constructs & fixpoints in lambda calculus

  • Tue Programming constructs in lambda calclus

  • Thu OCaml tutorial

Asn 1 out

Week 3 (Feb 8) Fixpoints and project ideas

Week 4 (Feb 15) Types

  • Tue Introduction to types

    • Ch. 8 of TAPL
  • Thu Simply typed lambda calculus

    • Ch. 9 of TAPL

you might also find helpful the notes from Sampson's Cornell class—this and this

Week 5 (Feb 22) Types continued

  • Tue Type inference

    • Ch. 22 of TAPL
  • Thu Types for an imperative language

    • Ch. 3 of SPA (Ch. 2 has language definition)

you might also find helpful the notes from Sampson's Cornell class—this and this

Week 6 (Feb 29) Semantics

  • Tue Operational semantics

    • The class presentation is based on Nielsen and Nielsen's book [Sem] -- see their comprehensive slides here
  • Thu Axiomatic semantics

    • The class presentation is based on Nielsen and Nielsen's book [Sem] -- see their comprehensive slides here

you might also find helpful Chs 7 (operational semantics) and 12 (axiomatic semantics) of Chlipala's FRAP book, which is freely available

Week 7 (Mar 8) Logic & SAT/SMT

  • Tue Propositional logic and SAT solvers

    • The class presentation will follow Dillig's slides: here and here
  • Thu First-order logic and SMT solvers

    • The class presentation will follow Dillig's slides: here and here and here

For more references, consult Bradley and Manna's book [CofC]—see references below

Week 8 (Mar 15) Transition systems & program encodings

  • Thu Bounded encodings

Week 9 (Mar 22) Automated verification

Week 10 (Mar 29) Automated verification continued

Week 11 (Apr 5) Applications of abstract interpretation

Week 12 (Apr 12) Applications of abstract interpretation (continued)

Week 13 (Apr 19)

project presentations

Week 14 (Apr 26)

project presentations

Assignments

Assignments will be posted here:

Assignment Due date
asn1 Feb 15
asn2 Mar 12
asn3 Mar 31
asn4 Apr 17

Evaluation

Performance will be evaluated as follows:

Task X%
Research project 45%
Assignments (4) 40%
Project presentation 10%
Class participation 5%

Course Project

For the final project, you can work on a problem of your choice with a partner or by yourself.

  • Deliverable 1 (Feb 7) Send me a list of three project ideas.

  • 5%: Deliverable 2 (Feb 20) Submit a 2-3 page proposal including the following: The statement of the problem to be investigated An explanation of why the problem is interesting A description of what you propose to do. Explain the elements that you will have to build. Explain the elements that you can pick up from open-source sites. Explain the experiment(s) or performance measurement(s) that you plan to carry out. Two good approaches are State the hypothesis that you hope to refute. Complete the following sentence: "The experiments were designed to shed light on the following questions: . . ." Then explain what you plan to measure; how you will measure it (if it is not obvious); and where you will obtain test cases. List the tasks, broken down into two or three milestones

  • 5%: Deliverable 3 (Apr 1) Submit a description of progress, implementation plan with completed steps checked off, and experimentation plan. Please turn in an updated proposal (with changes marked with changebars, and your new material added as "Appendix B: Progress Report".

  • 10%: Deliverable 4 (last 2 weeks of class) 10-15 minute oral presentations (plus 5 minutes for questions/discussion) will be given during class. You will need to e-mail me an abstract (in plaintext) giving the title, project participants, and a two-paragraph to three-paragraph summary of what will be presented.

  • 35%: Deliverable 5 (May 7) Final writeup: The final writeup should be modeled after a typical conference paper. There is no length requirement or limit, but I would expect it to be somewhere around 15-20 pages of Single-colum Latex article.

Resources

There are no required textbooks for this class. The following is a list of books that should be useful references for different parts of the course.

This is an excellent reference for our lambda calculus and types material

This is a free and excellent book that covers most material we cover in 704

This is a fantastic (I think it's the best) book on static program analysis

This book talks about decision procedures and their applications in verification.

This is a short book on operational, axiomatic, and denotational semantics.

The following book covers data-flow analysis and abstract interpretation.

This is another abstract interpretation resource.

There are multiple courses at other universities that overlap with the material we cover in CS704. Here are some that I found helpful:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].