CS 354-1 (F21) Syllabus (Aug 23 2021) 1/7 CS 354: Programming Languages Instructor Instructor: Jim Buffenbarger Office: CCP-359 Email: buff@cs.boisestate.edu Phone: 208-426-3567 WWW: http://cs.boisestate.edu/~buff BSU COVID-19 Information Meetings Lectures: MoWe 4:30–5:45 CCP-260 Office hours: TuTh 4:20–5:20 CCP-359 / Zoom (send email to request Zoom) by appointment CCP-359 / Zoom Our Teaching Assistant / Grader is Joey Kitzhaber: josephkitzhaber@u.boisestate.edu I am happy to answer questions by email: http://cs.boisestate.edu/~buff/files/EmailQuestions.pdf pub/doc/EmailQuestions.pdf Catalog Description Principles of programming languages: design, syntax, semantics, information binding, strings, arithmetic, input/output, recursion and extensibility. PREREQ: CS 321. In addition, familiarity with Unix, C, and Java is assumed. CS 354-1 (F21) Syllabus (Aug 23 2021) 2/7 Goals At the end of the course, the student will be able to do the following: • identify characteristics of procedural, object-oriented, functional, and script- ing languages • describe the phases of program translation • explain different forms of binding, visibility, scoping, and lifetime manage- ment • demonstrate the differences between various parameter passing methods • explain the concepts of encapsulation, abstraction, inheritance, and poly- morphism • write programs in languages based on several different programming paradigms • evaluate a language on the basis of the various features which it supports Students also experience working on a team, developing a website, and giving an oral presentation. Textbook • Programming Language Pragmatics, Michael L. Scott, Fourth edition, El- sevier: Morgan Kaufmann, 2015, ISBN: 9780124104099. Other Course Material This syllabus, lecture slides, assignments, and other material is available in what we’ll called our “pub” directory, on our Computer Science Lab (CCP-240, CCP- 241, and CCP-242) computers, served by onyx.boisestate.edu. The directory is at: ~jbuffenb/classes/354/pub This directory is read-only. So, you might want to copy it, perhaps to your local computer. Since onyx services Secure Shell (SSH) requests, you can use SSH clients (e.g., scp and sftp) to do so. However, beware: It contains symbolic links to parent directories, and scp -r will unconditionally follow them, thereby looping forever. To avoid this, use sftp or tar/ssh, as needed. CS 354-1 (F21) Syllabus (Aug 23 2021) 3/7 On our Canvas website, a copy of this directory can be accessed via the “Files” tab on the left sidebar. This copy is updated less frequently, since bulk upload is slow. Furthermore, although lecture slides can be viewed, the Canvas PDF viewer will not follow links to other files. Office hours for our Teaching Assistants are at: onyx:~jbuffenb/classes/354/pub/TutorOfficeHours You may also find the following local guide useful: onyx:~jbuffenb/classes/354/pub/etc/cs-linux.pdf In particular, it explains how to use SSH. Grading At the end of the course, a letter grade is assigned to each student according to rank among classmates, which is determined from numerical scores assigned for performance of these activities: Activity Weight Textbook Assignments 10% Language Assignments 30% Interpreter Assignments 20% Language Website 20% Exam 10% Final 10% Homework is due at 11:59PM, Mountain Time, on the day it is due. Late work is not accepted. To submit your solution to an assignment, login to a lab computer, change to the directory containing the files you want to submit, and execute: submit jbuffenb class assignment For example: submit jbuffenb cs101 hw1 The submit program has a nice man page. CS 354-1 (F21) Syllabus (Aug 23 2021) 4/7 When you submit a program, include: the source code, sample input data, and its corresponding results. Scores are posted near my office, as they become available. You are encouraged to check your scores to ensure they are recorded properly. If you feel that a grading mistake has been made, contact me within two weeks of the date that work is returned. Textbook Assignments (TA) Several problem sets are assigned, from the exercises at the end of each chapter of the textbook. Students work on these individually, not as teams. Language Assignments (LA) Several programs are assigned, to be developed in what are expected to be un- familiar programming languages (e.g., Scheme). Translators for these languages are available on the Linux computers in the Computer Science lab. Students work on these individually, not as teams. Interpreter Assignments (IA) A couple of programs are assigned, to extend a provided Java implementation of a simple programming-language interpreter. A Java development environment is available on the Linux computers in the Computer Science lab. Students work on these individually, not as teams. Language Website (LW) Each team of students develops a website dedicated to a particular, unfamil- iar, programming language. Teams are formed, and languages are assigned, randomly. Several milestones are assigned. Open-source translators for these languages are available on the Linux computers in the Computer Science lab. Results are shared in an team-delivered oral presentation. Of course, students work in teams. Exam and Final An exam and a final are administered. These are in-class, open-note, and open- textbook (but no other books) tests. Of course, students work on these individ- CS 354-1 (F21) Syllabus (Aug 23 2021) 5/7 ually. Makeup examinations are not normally administered. Source-Code Documentation Good documentation and programming style is very important. Your programs must demonstrate these qualities for full credit. Good documentation and pro- gramming style includes: • heading comments giving: author, date, class, and description • function/procedure comments giving description of: purpose, parameters, and return value • other comments where clarification of source code is needed • proper and consistent indentation • proper structure and modularity For more information, and examples, see: www.cs.swarthmore.edu/~newhall/unixhelp/c_codestyle.html Academic Integrity The University’s goal is to foster an intellectual atmosphere that produces ed- ucated, literate people. Because cheating and plagiarism are at odds with that goal, those actions shall not be tolerated in any form. Academic dishonesty includes assisting a student to cheat, plagiarize, or commit any act of academic dishonesty. Plagiarism occurs when a person tries to represent another person’s work as his or her own or borrows directly from another person’s work without proper documentation. If a student engages in academic dishonesty, the student may be dismissed from the class and may receive a failing grade. Other penalties may include suspension or expulsion from the University. Much more information about academic integrity, including examples of aca- demic dishonesty, is at: http://cs.boisestate.edu/~buff/files/www-integrity.pdf If you are unsure about a particular behavior, ask your instructor. CS 354-1 (F21) Syllabus (Aug 23 2021) 6/7 Labs and Safety Each student receives an account on the cluster of computers in the Computer Science Labs: CCP-240, CCP-241, and CCP-242. The cluster comprises a server named onyx.boisestate.edu and a set of nodes with shared home directories. It is remotely accessible, via SSH. The cluster runs the Linux and Windows operating systems, via VMware. Physical access requires building and room access. After-hours building access, and all-hours room access, require an authenticated proximity-type student- identification card. You are responsible for understanding and obeying lab rules: https://www.boisestate.edu/coen-its/labs/lab-rules/ CS 354-1 (F21) Syllabus (Aug 23 2021) 7/7 Schedule Week Date Topic Assigned Due Reading 1 Aug 23 Mon Introduction 1 Aug 25 Wed 2 Aug 30 Mon Programming Language Syntax 2.0-2.1 Sep 01 Wed TA1 3 Sep 06 Mon Labor Day Sep 08 Wed 4 Sep 13 Mon LA1 Sep 15 Wed 5 Sep 20 Mon Names, Scopes, and Bindings 3 Sep 22 Wed IA1 6 Sep 27 Mon TA1 Sep 29 Wed LA2 LA1 4.0-4.1 7 Oct 04 Mon Oct 06 Wed Control Flow IA1 6 8 Oct 11 Mon Oct 13 Wed IA2 LA2 9 Oct 18 Mon Exam Oct 20 Wed Data Types TA2 7-8 10 Oct 25 Mon LW1 Oct 27 Wed 11 Nov 01 Mon LA3 IA2 Nov 03 Wed 12 Nov 08 Mon Subroutines and Control Abstractions 9.0-9.4 Nov 10 Wed TA2 13 Nov 15 Mon LA4 Nov 17 Wed LW2 LW1,LA3 14 Nov 22 Mon Thanksgiving Nov 24 Wed Thanksgiving 15 Nov 29 Mon LW#2 Presentations LA5 LA4,LW2 Dec 01 Wed LW#2 Presentations 16 Dec 06 Mon LW#2 Presentations LA5 Dec 08 Wed LW#2 Presentations 17 Dec 13 Mon LA5 Dec 15 Wed Final: 5:00-7:00