CS 341 - Principles of Programming Languages
Course Information
Course Information Page
Syllabus
Homework Assignments
Readings
Moodle
Homework #1
- in class, demonstrate maximum/factorial work
Homework #2
Homework #3
Homework #4
Homework #5
Homework #6
(ms1)
Homework #7
(ms2)
Homework #8
(ms3)
Homework #9
(ms4)
Homework #10
(ms5)
Homework #11
(py1)
Homework #12
Homework #13 (TBA)
Fourth Hour Homework: Language Design
Phase 1
Phase 2 (ld2)
Phase 3 (ld3)
Phase 4 (ld4)
Online Resources
How to learn a high-level programming language:
Learn the basic syntax for
common high-level programming constructs
by
programming simple algorithms
(somewhat like
pidgin language
learning). One can also create
"Rosetta Stone" code demonstrations
where you you're always seeking to recreate the same computations across different general-purpose programming languages.
Immerse yourself in good programming examples to learn the common
idioms
programmers of that language use. (fluency)
Program, program, and program more. Although basic functional knowledge of a language can come quickly,
deep fluency can take years
.
Scheme:
Local Tutorial: Scheme for Java Programmers
Standard Scheme Language Reference (R5RS)
(
PDF
,
HTML
also
here
)
Dr. Racket (formerly Dr. Scheme)
home page
How To Design Programs
text
Fold:
Wikipedia page
,
Community-Scheme-Wiki page
,
Stack Overflow reduce examples
Filter:
Wikipedia page
,
(my other car is a cdr) (
plate image 1
,
plate image 2
,
site
)
JavaCC
JavaCC
LL(k) parser generator for Java
Eclipse JavaCC Plugin Home
JavaCC Documentation
JavaCC Lookahead Tutorial
Java Tree Builder (JTB)
- abstract syntax class generator for JavaCC grammars
Python
:
Python 3 Documentation (Tutorials, References, etc.)
Python for Java Programmers
Python for Lisp Programmers
How to Write a Lisp Interpreter in Python
Textbooks:
Beginner:
How to Think Like a Computer Scientist: Learning with Python 3 Documentation (2020, free PDF)
Think Python 2nd Edition (2015, free PDF, related to previous)
Fun examples:
Automate the Boring Stuff with Python: Practical Programming for Total Beginners by Al Sweigart (
HTML
)
Other possibilities:
Hackr.io Best Python Books for Beginners & Advanced Coders
Python Data Science:
A Whirlwind Tour of Python
by Jake VanderPlas (
Jupyter notebooks of the text
,
PDF
)
Python Data Science Handbook
by Jake VanderPlas (
Jupyter notebooks of the text
,
HTML
)
Rust
:
Wikipedia Overview
Official Rust Learning Resources
(
Book
,
Course
,
Examples
,
Documentation
)
Flutter
/
Dart
Flutter
Learning Resources
,
Documentation
, and
Examples (under "Samples & tutorials")
Dart
Documentation
, and
Examples (under "Samples & tutorials")
Hackr.io Recommendations for Flutter Tutorials and Courses
Lecture Examples
General:
Stanford CS250 Computer Languages Chart
Programming Language Popularity:
Tiobe Programming Community Index
IEEE Spectrum Top Programming Languages
PYPL Popularity of Programming Language Index
A Critique of Programming Language Popularity Metrics
Animation of Most Popular Programming Languages 1965 - 2022
Humor:
The International Obfuscated C Code Contest
How to Shoot Yourself in the Foot in Any Programming Language (
1
,
2
)
How to Build a Horse
Humor and 2016 programming language perspective from a Javascript evangelist