CSc 404 Syllabus
CSc 404
Spring, 2023
Programming Language Structures
3 Credits
Instructor:Tom Bennet
Office:302 MCC
Text:Programming Languages: Principles and Paradigms, by Allen B Tucker & Robert Noonan, ISBN 987-0-07-286609-4
Web Page:

An introduction to the principles of programming language design and implementation, syntax, data types, scope, data abstractions, concurrency and Object-Oriented Programming. Prerequisite: CSC 216

This course is fundamental to the understanding of programming languages. By studying the history, development, design and implementation of programming languages, the student gains an understanding of how and why the languages we use contain the features they do, and omit what they omit.

The course will examine formal methods for describing programming language syntax and semantics, and the methods used to translate languages and support them at run time.

Instruction will be through lecture, class discussion, programming projects, and problem-solving.


This class is a mixed undergraduate/graduate section. For graduate students, an additional 100-point graduate project is required. For both classes, grades are assigned based on the percentage of points earned.

Programming Projects and Homework250
Regular exams (3 @ 100)300
Comprehensive Final Exam200
Graduate (+100 pts)

The semester point total may vary due to unforeseen circumstances. Any variance will be small. Final grades will be based on these same percentages of the actual total.

There will be several programming assignments of varying difficulty, three regular exams, and a comprehensive final exam, according to this schedule. The final exam will on Saturday April 29, at 12:00.

The last day to drop this course is Friday, March 24, 2023.

Graduate students must perform an additional project. The graduate report may be a library research paper, or present the results of the student's own work. The topic must be approved by the instructor. A research paper must be at least 6 pages single-spaced, using reasonable fonts and margins. It must have at least 10 references. A programming project should be accompanied by a short paper (one page is usually sufficient) describing what it does and how to run it. Some possible topics include:

Any projects must be approved ahead of time, even if it seems to fit one of the above examples.

Programming Projects

As part of our study of programming languages, we will have several small projects using three important languages which are “off the beaten path.” Software to process these languages will be available in the labs, and are usually available for free online. These projects are given to emphasize concepts in the course, as well as to expand the student's horizons beyond the usual way of doing things in the procedural languages.

Each project will be small. Each language will have one very simple project to give experience running the language processor, and at least one more project which emphasizes interesting features of the language.

Projects should be handed in on time, and late projects are charged 10 points for each day late. However, each student has five free late days which may be spent on any programming project in any combination. Free late days are not transferable, and expire at start of the final exam.


Mississippi College class attendance policies as described on pp. 46 and 47 of the college catalog will be enforced. Absences may be excused for illness or other appropriate cause. Exams missed due to circumstances beyond the student's control may be made up at a mutually agreeable time and place. Adequate documentation of the cause of an absence may be required.

Academic Honesty

Mississippi College regulations regarding the integrity of academic work will be enforced. The computer science group has established the following addendum:

In a computer science class individual effort is expected. Student misconduct not only includes cheating on tests, but also extends to copying or collaborating on programming assignments, projects, lab work or research unless otherwise specified by the instructor. Using other people's accounts to do your work or having others do your work is prohibited. Close proximity in lab does not mean collaboration is permitted. NOTE: Discussing logical solutions to problems is acceptable, exchange of code, pseudocode, designs, or procuring solutions from the Web, other texts, the Internet or other resources on or off campus is not acceptable.

First offense: grade of 0 for all parties involved unless the guilty party can be determined. Second offense: grade of F in the course.