JMU CS 430 Spring 2019

Programming Languages

Syllabus

Course Information

CS 430, Programming Languages, 3 credits

Sections:

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 two 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: control flow, data types, scope rules, binding mechanisms, type checking, subprograms, parameters, 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 Ruby, Haskell, and Prolog.

Required Texts

The text for this course is:

Concepts of Programming Languages, 11th Edition. Robert W. Sebesta, Addison-Wesley, 2016. There is a tenth edition that you may use if you choose, and it is probably cheaper.

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

Attendance and Participation

Attendance is not required except at module tests. 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 student who don’t come to class.

All students are expected to participate during class activities and discussions. There are no participation grades, however.

Adding and Dropping the Course

Students are responsible for adding and dropping courses via e-campus. 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 http://www.jmu.edu/honorcode/code.shtml.

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 me.

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, www.jmu.edu/ods, 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 me 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 me 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 http://www.jmu.edu/JMUpolicy/1309.shtml.

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 (tests or programs) to demonstrate that you have mastered the material. There are nineteen modules in the class and so there are nineteen 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 test assessments during the semester. In addition, you may retake up to three test 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 test on the first try, that grade will be used. If you retake a module test, 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 tests to re-take during the final exam period. 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 basic module test at the scheduled time because of illness or other problems, you must contact me beforehand to arrange to take the test at a different time. If you are unable to complete a reading or program module assessment by the specified due date, you must contact me beforehand to make arrangements to deliver the work late. Failure to make prior arrangements for a missed or late assessment will result in a grade of zero for the assessment and the need to either take the second basic module test the following week, or to take a closed-book written assessment of the material at the final.

Correction of Grading Mistakes

Each student has as many as thirty individual grades in this class, and so in a section of 30 students, this means that as many as 900 assignments and 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 stands.