CS 430, Programming Languages, 3 credits
- 0001 (Johnson): 09:35-10:50 Tue/Thu
- 0002 (Johnson): 11:10-12:25 Tue/Thu
- 0003 (Lam): 12:45-14:00 Tue/Thu
- 0004 (Lam): 14:20-15:35 Tue/Thu
All class sessions will be held in Room 236 in the CS building (King Hall).
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
Two-way communication is a vital part of learning, and you are encouraged to contact your instructor with questions, concerns, and feedback. You have two avenues to contact your instructor: Slack and email.
Dr. Lam prefers to communicate via Slack for more informal or synchronous interactions outside of class or email for more formal or asynchronous interactions.
Dr. Johnson prefers that you use Slack for nearly all communication.
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, 12th Edition. Robert W. Sebesta, Pearson, 2019.
Using the link above, you will pay $45 for six-month access on the RedShelf service. There are also eleventh and tenth physical editions that you may use if you choose, but because of limited supply the physical copies may actually be significantly more expensive than the online version. You do not need any access code.
Links to various language references and tutorials on the web will be provided on the course website.
This is a synchronous in-person course, but given the ongoing nature of the COVID-19 pandemic and the technology used in the course you are strongly encouraged to ensure you have the following hardware and software:
A reliable, high-speed internet connection capable of running Zoom sessions, streaming 720p video, and sustaining a connection during hour-long Canvas assessments
A webcam and microphone, and preferably earphones or earbuds to reduce audio feedback during Zoom sessions.
A web browser capable of using Canvas, viewing the course website, and reading the course textbook (see section above for details).
A device capable of scanning written work to a black and white PDF.
The Zoom meeting client.
The Slack chat client.
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.
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. Some weeks will have two modules with assessments due (usually a basic and a reading module).
Basic modules: You will be expected to master certain material through reading, lectures, and completing labs; to verify mastery you will take an online quiz due 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 a 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.
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.
You will have one try for programming assessments and two tries for quiz assessments during the semester. 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.
For basic modules, we will provide labs as practice for the module quiz. These labs will be worth 20% of that module’s grade. They will be completed collaboratively in groups during classroom meetings and submitted electronically for grading using Canvas by the due date indicated there. The quizzes (mix of T/F, multiple-choice, fill-in-the-blank, free response, and file upload) will be worth 80% of that module’s grade and will be administered in Canvas, with the original and re-take due at the date and time indicated there.
For reading modules, we will provide reading guides and you are responsible for reading and taking notes on the textbook. 100% of the module grade will be based on the Canvas quizzes (mostly multiple-choice), with the original and re-take due at the date and time indicated there.
For programming modules, you must upload your solution on Canvas by the due date indicated there.
Your final grade will be determined based on the mean of your module assessment grades. For the final exam period, you will give a 3-minute flash talk on a language we have not covered in the course. If your talk is satisfactory, we will drop your lowest module score when determining final grades. More details about the flash talks and the required content and format will be provided as the end of the semester approaches.
Final grades will be assigned using a standard 90/80/70/60 grading scale with standard +/- cutoffs (0,3,7).
Attendance and Participation
Attendance is not strictly 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. Missing labs will also mean that you will need to do the work by yourself in order to submit and recieve credit.
It is very important to us that all students feel secure and included in this course. We also believe that a diversity of background and experiences enriches the classroom (including virtual classrooms). If at any time you have a concern about the classroom environment or your classmates, please talk to your instructor immediately so that we can address the situation. If you wish to be called by anything other than what is listed in MyMadison (e.g., nicknames, pronouns, etc.), please let your instructor know.
As a college student, there may be times when personal stressors interfere with your academic performance and/or negatively impact your daily life. If you or someone you know is experiencing mental health challenges at James Madison University, please connect with the Counseling Center (CC) located within the Student Success Center on the 3rd floor. You can learn more about available CC services by visiting their website or calling the Center (540-568-6552). Their services are free and confidential. Other available support resources to consider on campus include, but are not limited to the: Office of the Dean of Students, Health Center, Learning Strategies Instruction, and the Office of Disability Services.
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 a quiz or programming project 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.
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 forty 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.