CMSC330 Organization of Programming Languages
What does it say on Testudo?
A study of programming languages, including their syntax, semantics, and implementation. Several different models of languages are discussed, including dynamic, scripting (e.g., Ruby, Python) functional (e.g., OCaml, Haskell, Scheme), and memory safe systems programming (e.g., Rust). Explores language features such as formal syntax, scoping and binding of variables, higher-order programming, typing, and type polymorphism. Introduces finite automata, context free grammar, parsing, lambda calculus, and basics of security attacks and software security.
Why did I take this class?? Should I have taken this class???
Required for computer science. Also pretty fundamental knowledge for CS students.
Must-take.
Review
Pretty good class overall. Worked really well with the online format.
We learned Ruby, OCaml, and Rust. Projects 3 and 4 were really interesting in particular.
-
Project 1 was to practice Ruby, which feels like a really nice language. Very convenient and fast to write.
If you take this class and don't know that Ruby is dynamically-typed, you probably failed.
-
Project 2 was some OCaml practice, which felt disgusting at first, but now I really like using recursion everywhere.
-
Project 3 was about implementing NFAs and DFAs to create a regular expression interpreter.
-
Project 4 involving writing a lexer, parser, and interpreter for a C-like toy language. This was pretty cool, and makes me interested in taking CMSC430.
I probably won't though, since there's more interesting classes out there.
-
Project 5 was on security, where we had to patch some vulnerabilities on a web site.
This felt really hacky, but taught us to trust nobody with input.
-
Project 6 was basically some practice with Rust.
References and borrowing are really confusing, but I think Rust will be a popular language in the future.
The documentation for Rust is really nice.
Definitely gonna practice Rust more if I have time, but I want to learn C++ over winter break.
Exams were really easy, I think they wanted everyone to have a chance at acing them.
The quizzes were honestly harder, but still easy. I got a few points off due to stupid mistakes though.