Logo courtesy Wordle.net
[Basic Information] [Announcements] [Calendar/Assignments] [Links]
Welcome to CS 4100, Programming Languages
will introduce you to the principles of the design, evaluation,
and implementation of computer programming languages. As such it
is not a crash course to teach you to program in a half dozen
new dialects, although you will find learning new languages
easier as a result of this study. Our emphasis will be on the
kinds of features languages might have, how they influence a
programmer's thought process, and how they may be implemented on
this level of study, we will find that complex tradeoffs between
language principles coupled with a variety of differing goals
often can lead designers to radically different design
decisions. There seems to be no single "right" way to design a
programming language, no single language that is "right" for all
applications. You will be asked to explore some of these
tradeoffs through a series of writing assignments in which your
thought process and ability to balance fairly many aspects of
complex issues will often be more important than the conclusions
you reach. Because of this subject matter and pedagogical
approach, this course meets the University graduation
requirement for Writing Proficiency, and you will need to have
passed the University Writing Proficiency Screening Test before
(The above paragraphs are from Dr. Ray Zarling's CS 4100 course description, with permission.)
Announcements and Upcoming Events
|5/28/2020||"Programming languages: Developers reveal what they love and loathe, and what pays best", 28 May 2020, zdnet.com.|
|5/18/2020||If you downloaded the final exam before Monday, there was a footnote in question 5.b. I removed the footnote and forgot to remove the little "2" referencing the now-gone footnote. (The footnote just included my source for the "country with the most/best/highest X" information - the Economist Pocket World World in Figures. 2018 edition, I think.)|
|5/18/2020||Examples of how to cite sources (ACM style) and create a bibliography -
you can do no better than to download and examine a few recent papers published
by SIGPLAN, the Special Interest Group on Programming Languages.
At the bottom of the SIGPLAN web page are links to papers of particular, recent interest to the professional programming languages community, such as "Confessions of a Used Programming Language Salesman: Getting the Masses Hooked on Haskell" (the programming language Haskell, and functional programming languages) or "A computational model for TensorFlow: an introduction" (machine learning from a programming languages point of view).
These papers cite their sources using the ACM reference style, which is one of the styles you, too, are welcome to use. (Just spell out the complete names of your sources, instead of abbreviating. Use "41st ACM SIGPLAN International Conference on Programming Language Design and Implementation" in your bibliography, instead of "PLDI '20".)
|5/18/2020||I will be "sitting in" our class Zoom meeting during final exam time, and probably for a half-hour or more beforehand.|
|5/6/2020||Spring 2020 Grading Options - including instructions on how to change your grading options if you want.|
|4/20/2020||Emojicode, the all emoji programming language.|
|4/10/2020||Remember when we (briefly) talked about COBOL in class? "Our Government Runs on a 60-Year-Old Coding Language, and Now It's Falling Apart: Retired engineers are coming to the rescue," (OneZero.medium.com, 7 Apr 2020) -- you never know when knowledge of old programming languages will be useful.|
|4/10/2020||Spring 2020-only Grading Policy Changes.|
Regarding trademark/copyright and "Happy Birthday", on 10 April 2013, the podcast "Stuff You Missed in History Class" released an episode on "The Story of 'Happy Birthday to You'.
I recommend the podcast. Good luck finding it; the official web site for the podcast is annoying.
|4/3/2020|| Here is the midterm.
A blank MSWord document is here if you want to use it.
When you are done with the midterm, upload your work to the CS Homework site.
(Password for midterm and blank document is the same as the lecture slide password.)
|4/1/2020||Due to changes required by campus closure and moving alone, the grading policy for the semester has been revised. (See 'Grading and Policies' below for the new balance of graded components in the class.)|
|3/30/2020|| Suggestions for document scanning apps:
CamScanner, Genius Scan, Adobe Scan
COVID-19 class changes:
These plans are experimental, and may be changed if they don't work as hoped.
|3/16/2020||If you don't feel comfortable attending class that's week, that's fine by me. Just read the end of the Fortran chapter and the entire chapter on BNF with great care and attention to detail.|
|3/13/2020||"Memory and Storage", Timeline of Computer History, Computer History Museum. I draw your attention the RAMAC hard disk -- the world's first hard drive, with a whopping 5 megabytes of storage. Or the Apollo Guidance Computer memory -- hand-woven, storing 72 kilobytes. (To the moon and back, on 72 KB!)|
|2/24/2020||"Go Language Tops List of In-Demand Software Skills", IEEE Job Site, 18 Feb 2020.|
|1/23/2020||"Tech Professions Dominate Rankings of Best Jobs in the U.S.", IEEE Spectrum 'View from the Valley', 17 Jan 2020.|
|1/27/2020||Welcome to CS 4100!|
Textbook is Principles
of Programming Languages: Design, Evaluation, and Implementation
(Third Edition), by Bruce J. MacLennan
Instructor: Dr. Megan Thomas
Office: Demergasso-Bava Hall 279
Web Page: www.cs.csustan.edu/~mthomas
Best way to contact Dr. Thomas:
Email firstname.lastname@example.org Please put "CS4100" in the subject
line of the email.
of the Writing Proficiency Screening Test with a passing score, and
Warning: I reserve the right to make changes to the
syllabus at any time during the term by announcing them in class
and on my web page.
Projects and Assignments
The Writing Center website is located at http://www.csustan.edu/writingcenter/
Phone: Writing Center: (209) 667-3465
(The contents of this web page are borrowed liberally from Dr. Melanie Martin's CS 4100 course description, with permission.)