CS 430, Programming Languages, 3 credits
- 0001 (Bowers): MWF 9:05-9:55, ISAT/CS 140
- 0002 (Bowers): MWF 10:10-11:00, ISAT/CS 140
- 0003 (Lam): MWF 13:25-14:15, ISAT/CS 246
- 0004 (Lam): MWF 14:30-15:20, ISAT/CS 246
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.
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.
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:
- Name important milestones in the evolution of programming languages.
- 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.
- Describe and explain the procedural, declarative, functional, object-oriented, and scripting language paradigms.
- Describe and explain the low-level operations of a computer in executing various programming language constructs and representing various standard data types.
- Describe and explain what happens at run-time when subprograms are executed.
- Independently learn a programming language from various reference materials.
- Read and write simple programs in at least three different languages, including at least one functional or declarative programming language.
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. 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.
You are expected to comply with the JMU Honor Code as stated in the Student Handbook and available from the Honor Council Web site 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 your instructor.
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 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 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 (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).
There will be five types of learning activities in this course.
- Module Guides: These state the objectives for the module, the resources available to you, and how you will be assessed.
- Readings: Sebesta’s Concepts of Programming Languages (CPL) will be the main resource for several modules. For other modules, CPL will be used as supplementary reading.
- Class Lectures and Discussions: Although much of the material in this class is easy enough to master through reading and working problems, some of it is more challenging. The instructor will lecture on more challenging topics and work problems in class the help you learn the material.
- Labs: Structured lab work will be provided as a way to learn programming languages and other material. These will occur during class time with the instructor present to answer questions. Labs will not be graded but you are expected to complete them.
- Web Resources: Videos, tutorials, and other material from the web may be recommended to help master the course material.
Types of Modules and Module Assessments
There are three types of modules with corresponding module assessments.
- Basic modules: You will be expected to master certain material through reading, lectures, and completing labs; to verify mastery you will take a closed-book written module quiz during class on Fridays. Unless otherwise noted, second-try quizzes will be available the following Friday (so the two tries for a module will be done on consecutive Fridays).
- Reading modules: You will be expected to read assigned material carefully and then take an open-book quiz on Canvas to demonstrate mastery of the material. Modules of this sort will generally contain material that is easy to understand through reading, or that you should already know quite well from your past courses. Reading module quizzes must be taken by a specified due date. Unless otherwise noted, second-try reading module quizzes will be due one week after the initial due date.
- Programming modules: You will be expected to write short programs in various programming languages and submit them on Canvas for assessment. Programming modules must be completed by a specified due date. There will be no second try for programming modules.
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.