JMU CS 430 Spring 2020

Programming Languages


Course Information

CS 430, Programming Languages, 3 credits


Catalog Description

Several actual programming languages are studied in terms of the fundamental principles of computer programming language design, including object-oriented programming, functional programming, concurrent programming and logic programming.
Prerequisites: Grades of C- or better in CS 240 and CS 261.

Contacting the Instructor

In general, we prefer to communicate via email if not in person; however, if you have a question that would be of general interest, please ask it on Piazza so that others can see our answer.

Course Content

Programming languages are central to computing, so as computing professionals it is important that we understand and appreciate the limits and capabilities of programming languages, and a little bit about how they work. There are thousands of languages, but their features, characteristics, and implementations are relatively few, so we concentrate on learning the latter rather than the former. This is the overall objective of this course. Nevertheless, it helps to have concrete examples, so this semester we will also learn the basics of at least three very different languages as illustrative examples.

Course Goals

The overall goal of this course is to learn the fundamental concepts that underlie the design and implementation of programming languages. This will help you better understand the capabilities and limitations of programming languages, make you more proficient using the languages you already know, make it easier for you to learn new languages, and give you a basis for choosing programming languages for future projects. More specifically, by the end of this course you will be able to:

  1. Name important milestones in the evolution of programming languages.
  2. Describe and explain the major features of programming languages including: syntax, expressions, control flow, data types, scope rules, binding mechanisms, type checking, subprograms, parameters, concurrency, error handling, and how languages support abstract data types and the object-oriented paradigm.
  3. Describe and explain the procedural, declarative, functional, object-oriented, and scripting language paradigms.
  4. Describe and explain the low-level operations of a computer in executing various programming language constructs and representing various standard data types.
  5. Describe and explain what happens at run-time when subprograms are executed.
  6. Independently learn a programming language from various reference materials.
  7. Read and write simple programs in at least three different languages, including at least one functional or declarative programming language.

Required Texts

The text for this course is:

Concepts of Programming Languages, 11th Edition. Robert W. Sebesta, Pearson, 2015. There is a tenth edition that you may use if you choose, and it is probably cheaper. You do not need any access code nor do you need the newer electronic edition.

Links to various language references and tutorials on the web will be provided on the Canvas site.

Attendance and Participation

Attendance is not required except for module quizzes. However, attendance is expected in the sense that material missed because of unexcused absences will not be provided by the instructor on other occasions. In other words, there will be no private lectures during office hours for students who don’t come to class.

Adding and Dropping the Course

Students are responsible for adding/dropping and withdrawing from courses via MyMadison. We do not give “WP” or “WF” grades to students requesting a drop after the deadline except in extraordinary circumstances.

Academic Honesty

You are expected to comply with the JMU Honor Code as stated in the Student Handbook and available from the Honor Council Web site

Consulting with other students about problems and solutions is not a violation of the honor code, provided that the ultimate work turned in for an assignment is your own. This means that everything written down and turned in for an individual assignment must come from your head, not someone else’s. If in doubt about whether something is allowed, ask your instructor.

Disability Accommodations

If you need an accommodation based on the impact of a disability, you should contact the Office of Disability Services (Wilson Hall, Room 107,, 540-568-6705) if you have not previously done so. Disability Services will provide you with an Access Plan Letter that will verify your need for services and make recommendations for accommodations to be used in the classroom. Once you have shown your instructor this letter, we will sit down and review the course requirements, your disability characteristics, and your requested accommodations to develop an individualized plan appropriate for this course.

Religious Observation Accommodations

If you cannot satisfy a requirement of the course for religious reasons you must let your instructor know at least two weeks in advance. In some cases you will be required to make up the requirement; in other cases the requirement may be waived with suitable adjustment in grading criteria.

Inclement Weather Policy

This class will operate in accord with JMU’s cancellation policy available at

Methods of Evaluation

This course will be run on a mastery model, which means that you will be doing various activities during and outside of class and then doing short assessments (quizzes or programs) to demonstrate that you have mastered the material. There are twenty modules in the class and so there are twenty assessments. Your final grade will be determined based on the mean of your module assessment grades. You will have one try for programming assessments and two tries for quiz assessments during the semester. In addition, you may retake up to three quiz assessments during the final exam period. If you master all modules during the semester, then you do not need to appear at the final exam at all.

If you are satisfied with your grade for a module quiz on the first try, that grade will be used. If you retake a module quiz, the higher grade grade will be used.

Final grades will be assigned using a standard 90/80/70/60 grading scale with standard +/- cutoffs (0,3,7).

Learning Activities

There will be five types of learning activities in this course.

Types of Modules and Module Assessments

There are three types of modules with corresponding module assessments.

Due to timing considerations, there may not be a regular re-take for the last module of the semester.

You may choose up to three basic or reading module quizzes to re-take during the final exam period. All final exam quizzes will be on paper, even for reading modules. These scores will replace the lower of your existing grades for that module.

Missed and Late Module Assessment Policy

If you are unable to take a quiz or submit a program at the scheduled time because of illness or another excused absence, you must contact your instructor beforehand to arrange to complete the assessment at a different time. Failure to make prior arrangements for a missed or late assessment will result in a grade of zero for the assessment.

Correction of Grading Mistakes

Each student could have as many as fourty individual assessment grades in this class, and so in a section of 30 students, this means that as many as 1200 assessments are graded and recorded for each class. Inevitably, there will be mistakes. It is your responsibility to check your grades on Canvas and report any mistakes to the instructor within two weeks of the date a grade is posted. If you do not report a mistake within this time, the posted grade will stand.