This course
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
a computer.
(The above paragraphs are from Dr. Ray Zarling's CS 4100 course
description, with permission.)
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
Email: mthomas@cs.csustan.edu
Web Page: www.cs.csustan.edu/~mthomas
Best way to contact Dr. Thomas:
Email mthomas@cs.csustan.edu Please put "CS4100" in the subject
line of the email.
Prerequisite: Completion
of the "Golden Four" lower division GE courses, and
CS 3100.
Warning: I reserve the right to make changes to the
syllabus at any time during the term by announcing them in class
and on the course web page.
This is a face-to-face class.
Web Sites for Paper Sources, and Writing Advice
Paper Topic Ideas, Sources
- TIOBE Index of popular programming languages, one of many lists that try to identify the currently most popular programming languages.
- The Top 10 Programming Languages: Spectrum's 2024 Ranking (Aug 2024)
- Computer Languages History site --
including a list of interesting languages (some accompanied by links to useful
information), and links to lists of 2,000+ or 8,000+ programming languages.
(Sent to me by student DL in Spr 2023)
- "Teach Foundational Language Principles" (May 2015) - An article wherein you may find paper topic ideas.
- "Developers: These are the programming languages that pay the most", ZDNet.com, 3 Sept 2020.
- "Go Language Tops List of In-Demand Software Skills",
IEEE Job Site, 18 Feb 2020. - An article wherein you may find paper topic ideas.
- Places to find sources for your papers
- ACM Digital Library (freely accessible from campus; visit via CSU Stanislaus Library web site to access from off-campus)
- Safari Tech Books Online (visit via CSU Stanislaus Library web site to access full text of books)
- ACM SIGPLAN: SIGPLAN is the Programming Languages group within the ACM, so their web site lists many of the PL-specific conferences,
along with winners of Best Paper awards and other possibly useful information. You would still need to visit the ACM Digital Library to download the papers themselves.
- Numerous other reputable sources of CS papers exist (IEEE, Usenix, etc),
but the sources listed here are most likely to contain programming languages work useful for this class.
Computer Science & Information Systems from the CSU Stanislaus Library
Lecture Extra Information
- "Rob Pike - 'Concurrency Is Not Parallelism'" (31 minutes, 2015)
Rob Pike is one of the creators of the Go programming language. (Ken Thompson is one
of the others. Created the B language, direct precursor to C.)
- "Understanding Apple's SSL/TLS Bug"(Feb 2014, imore.com) - uh, oh, goto...
- "XX Factor: The Woman Who Put Man on the Moon", a podcast by
"American Innovations".
If you have ever wondered who started the use of the term 'software engineer,' well,
this podcast will answer that question.
-
Computing Conversations video playlist of interviews by
Charles Severance, for IEEE Computer.
Some interviews are with programming language creators.
- Historical Computers
- "The first one I ever programmed" (personal reflections on the IBM 650)
- The IBM 650 Magnetic Drum Calculator
- Univac I and IBM 702:
here is a bigger picture of the IBM 702, and, for comparison, the Univac I,
a 1950's computer that was manufactured a few years earlier.
- "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!)
- Writing Advice
Grading and Policies
Final grades will be based on projects and assignments, a term
project and exams. A plus and minus grading scale wll be used to
assign final grades. Except for designated collaborative activities
in connection with the project, all writing and other work you
present for credit must be entirely your own, or developed on your
own in consultation with the course instructor or other Department
faculty. Penalties for representing other people's (or any machine's) work as your own
will range from No Credit on an assignment through failure of the
course and possible University disciplinary action. Over the course
of the term we will discuss these issues in more detail, but it is
your responsibility to seek clarification and understand the
parameters involved. Your work may be electronically checked for
plagiarism using Turnitin.com.
Projects and Assignments:
Homework will usually require you to organize you thoughts about some aspect
of the material we are studying, and to write a carefully crafted
and thoughtful paper. Some parts of your assignments will be used
only for class discussion and not turned in, but usually they will
be graded. In aggregate, all homework you turn in will comprise 30%
of you final grade. Some of the questions will require problem
solving or programming skills, but programming segments or other
technical language will generally be in service of some larger point
supported by prose arguments. Late assignments will be accepted unless you are notified
otherwise, but will suffer a grading penalty dependent on the degree
of lateness.
Term Project: In
addition to these assignments, you will be required to write a term
project. Specific requirements and a timetable will be distributed
early in the term. The
final draft of the project will be due at the time normally
scheduled for the final. It will not be accepted after that time.
The project grade will be based upon earlier writing activities as well
as the final product and will, in aggregate, count as 30% of your
final course grade.
The final term paper will be at least 2,500
words in length (not counting bibliography, quotations, captions, headers, etc).
Submission of Projects and
Assignments: All projects and assignments (unless otherwise
stated) are to be turned as follows:
1. An electronic copy is to be uploaded to the course Canvas website
by midnight on the due date.
2. (Optional) A hard copy may be turned in at the beginning of class on the
due date.
Exams: There will be two
exams given during the course of the semester.
Each exam will account for 20% of your final grade.
Grade Summary:
Projects and Assignments
|
30%
|
Midterm Exam
|
20%
|
Term Project
|
30%
|
Final Exam
|
20%
|
Total
|
100%
|
N.B.: To satisfy campus Writing Proficiency graduation requirements, students
must earn a C- or better in this class.
(The above four paragraphs borrowed liberally from Dr. Ray Zarling's
CS 4100 course description, with permission.)
University deadlines for setting grading options, and deadlines for enrolling,
withdrawing, etc.
Academic Honesty
The work you do for this course will be
your own, unless otherwise specified. You are not to submit other
people's (or any machine's) work and represent it as your own. I consider academic
honesty to be at the core of the University's activities in
education and research. Academic honesty is expected at all times
in this course.
AI policy
The use of AI is permitted, if the AI is treated as another author. Any text or sample code created by an AI must be appropriately cited (exactly as text from any other human author is cited), with a reference in the bibliography that includes the 'prompt' given to the AI.
Attendance
Regular class attendance is expected;
attendance for certain activities will be required. Students are
responsible for all announcements and in-class discussion.
Cell Phone Policy
If you attempt to use your cell phone or leave it on
during an exam, you will be considered to have finished your test,
and I will collect your exam at that time. Exceptions may be
made only if you discuss your situation with me prior to the start
of that day's class.
Audio / Video Recordings
Audio / video recordings will be made, most days, of the lecture, and will be available
via Panopto, in our Canvas web site.
The recordings are only for use of students in Fall 2024 CS 4100, and should
not be shared with anyone outside the class.
When in physical classes, audio
or video recording (or any
other form of recording) of classes is not permitted unless
expressly allowed by the faculty member as indicated in the course
syllabus or as a special accommodation for students who are
currently registered with the Disability Resource Services Program
and are approved for this accommodation. Recordings allowed as
special accommodations are for the personal use of the DRS-approved
student, and may only be distributed to other persons who have been
approved by the DRS program. Faculty may require the student sign an
Audio / Video Recording Agreement, which they may keep for their
records.
University Writing Center
The Writing Center offers free individual
and small group tutoring to students from all disciplines and at
all levels of proficiency. Dedicated to encouraging dialogue
among writers and helping students become successful writers,
the Writing Center provides a supportive, judgment-free
atmosphere in which tutors share strategies and experiences at
each stage of the writing process. Graduate and undergraduate
tutors are evolving writers who, through experience and
training, continue to develop their abilities as tutors and writers.
The Writing Center website is located at
http://www.csustan.edu/writingcenter/
Phone: Writing Center: (209) 667-3465
Email: writingcenter@csustan.edu
Canvas Learning Management System,
where some class activities, and paper submissions to Turnitin.com will be done.
Grades will be communicated via Canvas. (However, ignore the final letter grade
Canvas makes up and reports; that letter grade is not correct. See this syllabus
for how grades are calculated.)
Document scanning apps for smartphones that past students have recommended:
CamScanner, Genius Scan, Adobe Scan. (Note that the professor doesn't care if the
apps leave watermarks on your scans, as long as the documents are readable.)
- Student Health Center
- Health Center Building / 209-667-3396 / www.csustan.edu/health-center
Medical care, health education, disease prevention, laboratory testing, physicals, women's and reproductive health, flu shots, immunizations.
- Disability Resource Services
- Vasche Library, L150A / 209-667-3159 / www.csustan.edu/disability-resource-services
Supports students and arranges accommodations for students with disabilities, including disabilities related to learning, vision, mobility, hearing, autism, or chronic or temporary health factors.
- Psychological Counseling Services
- Student Services Annex 1 / 209-667-3381 / www.csustan.edu/CAPS
Confidential individual personal counseling and group/wellness workshops to help students deal with stress, anxiety, depression, grief, relationships.
- Undocumented Student Services
- Vasche Library, L203 / 209-667-3519 / www.csustan.edu/dreamers
Walk-in advising, workshops, legal services, DACA renewal, scholarships, peer support, family and community engagement.
- Academic Success Center
- MSR 210 / 209-667-3700 / www.csustan.edu/ASC
Drop-in advising for general education, university requirements, undeclared majors, academic probation, and California Promise.
- Learning Commons
- Vasche Library, L222 / 209-667-3642 / www.csustan.edu/learning-commons
Tutoring (walk-in and regular appointments), supplemental instruction, WPST, writing center.
- Career and Professional Development
- MSR 230 / 209-667-3661 / www.csustan.edu/career
Career coaching, workshops, resume building, business attire, and more.
Schedule of Career Center events
- Student Support Services
- www.csustan.edu/student-services
Interesting Articles (or podcast episodes) for CS Majors
- "A Philosophy of Software Design vs Clean Code", a conversation between John Ousterhout (creator
of Tcl language and Tk toolkit) and Robert Martin (author of 'Clean Code'), Sept 2024 to Feb. 2025
- "SE Radio 650: Robert Seacord on What's New in the C Programming Language", IEEE Software Engineering Radio (podcast), 8 January 2025.
If any
of the words used in the podcast puzzle you, come visit my office hours. (Be aware some
of the puzzling words may be names of companies or of software.)
- "Engineering the First Fitbit: The Inside Story. They had a billion-dollar idea - and a lot to learn about hardware.", IEEE Spectrum, September 2024. A good read if you want to be in a start-up or work with consumer devices someday. (May only be accessible from on campus, or on the campus VPN.)
- "IT hiring roars back after monthslong slump", CIODive.com, 4 Oct 2024.
- "What Developer Specializations Pay the Most?", Dice.com, 2024 Aug 14.
- "Where America's STEM and R&D jobs are and what pays the most",
R&D World, 2024 June 5.
- "Best Tech Careers for 2023" (Baselinemag.com, 15 Mar 2023)
-
"These old programming languages are still critical to big companies. But nobody wants to learn them",
TechRepublic, by Owen Hughes on June 30, 2021
- "4 strategies for managing your job search anxiety" (Fast Company, 4 May 2021)
- "ACM Turing Award Honors Innovators Who Shaped the Foundations of Programming Language Compilers and Algorithms: Columbia's Aho and Stanford's Ullman Developed Tools and Fundamental Textbooks Used by Millions of Software Programmers around the World," ACM, March 2021.
- "Episode 434: Steven Skiena on Preparing for the Data Structures and Algorithm Job Interview" of the Software Engineering Radio podcast. (10 Nov 2020)
- Curious about what an interview for a software engineering job might involve? Listen to: "Episode 412: Sam Gavis-Hughson on Technical Interviews", 10 June 2020, IEEE Software Engineering Radio
- "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.
- Emojicode, the all emoji programming language. (Not suitable as a final paper topic.)
Course Learning Outcomes, Catalog Description
Students should be able to:
- Write a 2,500+ word paper, in the style of a research paper in computer science, about a topic in programming languages
- Explain how to avoid plagiarizing in their own writing
- Explain different choices in programming language design and their trade-offs, such as different approaches to scoping rules, parameter passing, etc.
- Give examples illustrating how specific programming languages do or do not comply with principles of good design for programming languages
- State the differences and similarities between at least three different programming languages covered in the course
- Draw diagrams illustrating the run-time behavior of code samples
Catalog Description: Study of programming language concepts such as binding, data structures, string handling, control structures, as embodied in various programming languages. Satisfies upper-division writing proficiency requirement. Prerequisite: CS 3100.
Acknowledgement
(The contents of this web page are borrowed liberally from
Dr. Melanie Martin's CS 4100 course description, with permission.)