Welcome to CSC 521. This course presents an in-depth study of the issues in the design, implementation, and application of programming languages. Topics will vary from basic to advanced in areas such as syntax, semantics, binding, data abstraction, exception handling, concurrency, and functional, logic, and objected-oriented programming.
Please refer to the syllabus for more information on the administrative guideline.
Important course news and announcements are posted here, so please check this README.md
file regularly.
- 5/7/2017 Please watch the following videos for the next class:
- Bennett, Andrew Creating, Coding and Compiling a Compiler with LLVM
- Holewinshi, Justin. PTX Back-End: GPU Computing with LLVM
- Keep, Andy. Writing a Nanopass Compiler This is not related to LLVM but Andy does talk about multipass compiler techniques, which is essential for LLVM.
- 4/18/2017 Please watch the following videos for the next class:
- Fletcher, Angus. Emulators, Immutability, and Time Travel
- Nasser, Ramsey. Symbolic Assembly: Using Clojure to Meta-program Bytecode
Please be aware that these two talks are very clojure centric. So you might want to have a little bit of background on functional programming beforehand. Regardless, for the next class I will talk more about functional programming.
-
4/3/2017 Please take a look at Calc example we did in class.
-
3/21/2017
- Homework 2 has been posted.
- Regrade If you would like your homework or exam regraded, please submit an formal request via email stating
problem #
and rationale why you should get a higher grade.
-
3/6/2017 Please note that I will not be in class today do travel conflict. Please watch the following videos:
-
Guy Steele's Growing a Language. Additionally his paper Growing a Language can serve as a reference.
-