Starting from:

$35

Final project Solution

Overview




The nal project should be a substantial project that demonstrates what you’ve learned in the course. You’re free to propose your own project idea, but it should relate to the course topic.




You can work solo or in small groups.




Please submit proposals (including group members) by 4/19 and the projects themselves by 5/12.




Only one submission is necessary per group.




Sample project ideas




Build a compiler / interpreter / typechecker for some language: { (a subset of) Scheme

{ CLite (http://myslu.stlawu.edu/ ehar/Spring10/364/clite grammar.html) { an esoteric language (see https://esolangs.org/wiki/Main Page)




{ lots of choices (see https://en.wikipedia.org/wiki/List of programming languages by type) { or your own custom language!




Look into more advanced features of one of the languages we covered and build some application that utilizes them.




Look into an interesting language we didn’t cover and build an application in that language: { Parallelize code on a GPU using CUDA

{ Write a parallel application using Erlang




{ Look into languages like Agda or Idris that are similar to Haskell but use a dependently-typed type system and demonstrate how that’s useful




{ Learn Prolog and show how its tools for logic-based reasoning can be used to solve prob-lems




{ etc.




Build a (subset of) a computer algebra system




{ E.g., do symbolic di erentiation of polynomials




{ Design a domain-speci c language for the user to input their expressions




Modify / improve an existing open-source application/library Build a GUI-based native application




Build a web application using one of the languages we’ve covered (e.g., using ghcjs with Haskell).




Build a library/application using an interesting novel language.




Prove the correctness of a program/algorithm using Z3 (https://rise4fun.com/z3)




Implement the same algorithm/data structure in multiple languages (e.g., functional vs. im-perative, static vs. dynamic) and compare their performance / ease of implementation.







Evaluation




Your projects will be evaluated based on a number of factors:




Proposal




Scale of the project (note that larger groups should have correspondingly larger projects) Completeness / functionality




Design / UI / polish / creativity




Submission




In addition to your project, please write a description (pdf or powerpoint) of your project, your goals, what worked, what didn’t, etc. Be sure to describe how your project relates to the topics in this course.




Please submit a zip/tar le on Sakai with all relevant les.































































































































2

More products