CS230 - Programming Languages
Fall 2020
Skidmore College
Syllabus

Instructor:
  Dr. Michael Eckmann
  Associate Professor
  Computer Science Dept.
  email: meckmann@skidmore.edu
Instructor webpage: https://meckmann.domains.skidmore.edu/
Office hours: TBD TBD - TBD

Course webpage: https://meckmann.domains.skidmore.edu/2020Fall/cs230/

=====================================================

Class Meetings

LECTURE  
M W  
03:30 P.M. - 04:50 P.M.  
ONLINE
DISCUSSION SESSION  
F  
03:30 P.M. - 04:25 P.M.  
ONLINE

=====================================================

Course Text and readings

Required Text: Concepts of Programming Languages, 11th Edition
by Robert W. Sebesta

Other readings as handouts/links.

=====================================================

Course Overview

The course will cover evaluation criteria of languages and language constructs.
We then cover compiler design concepts of describing syntax and semantics. The
language constructs that we focus on are variables, types, scope, pointers and
references, arrays, records (among others.) We discuss the various
implementations of these constructs in many different programming languages
(e.g. Java, C, C++, Perl, Python, Scheme, Lisp, Prolog, etc.). We also cover the major
language categories of imperitive, functional, logical and object-oriented. To
give students experience with these different language categories, and since all
students in the course are familiar with Java, which is an object-oriented and
imperitive language, the students get intensive experience in writing programs
in other language categories. These concepts, experience in writing in
multiple language categories and the ability to evaluate languages are skills
necessary for students to be able to choose the right language for the job.

=====================================================

Student Learning Goals

The successful student after passing this course will achieve the ability to

1. understand some of the main issues and choices language designers
   /implementers have when a programming language is created

2. be able to evaluate languages and language features based on a set of
   evaluation criteria.

3. understand the major differences between imperitive, functional, logical
   and object-oriented programming languages

4. program in several different environments using several different languages
   --- skills that will help students to be able to learn a new language in the
   future whenever it is necessary

5. understand how parsing is done

6. understand ways that language designers describe syntax and semantics


Disability Accommodations

=====================================================

Assignments

The course will have 4-5 programming assignments. The
submission procedure will be given when it comes time for you to submit
programs.

One policy that you must follow is: Give proper attribution to any code
you get out of a book or off the web or any code that you yourself did
not write. That is, if you use code (even a small amount) taken from
another source (the text book or lecture notes or elsewhere), you *must*
cite the source in a comment in your program. If you do not, it may be
considered plagiarism. The program source code will be read. Source code
documentation and organization should make your program easy to read,
and convey your understanding of the techniques your program
demonstrates. Poor documentation and programming style will result in a
lower score. (Note: This policy is borrowed from G. Drew Kessler's
(Lehigh University) program policy. See, I gave proper acknowledgment. ;-)

In addition to programming assignments, there will be conceptual
homework assignments.

Assignments and class handouts will be available on the World Wide Web at
URL https://meckmann.domains.skidmore.edu/2020Fall/cs230/

Please type all assignments.

Late assignments will be accepted, but with penalty.

=====================================================

Exams

The course will have an exams during the semester in addition to a final exam.

You are required to take the exams at the scheduled place and time. Any
exams given cannot be made up. Those students who are absent when an exam
is given are given a zero for that exam. However, if there is a
compelling reason for you to need to miss an exam, you MUST contact the
instructor in advance. This policy is strict.

=====================================================

Grading Policy

A grade is first calculated by the following scheme:
20% Weekly Quizzes
15% 1st exam (closed book)
30% Final exam (closed book)
35% Programming Projects and other homework

However, your final grade will be influenced either positively or
negatively by how I, the instructor, evaluate you on the following:
a) participation
b) increase of performance throughout the semester,
c) quality/effort of your program/homework submissions (aside from just
   correctness)
d) lateness of your program/homework submissions

Each program/homework/exam may be graded on a curve (with assignments not
turned in not affecting the curve). Programs and homework assignments will
have point values that reflect their relative weights.

In general each curve will have a mean between B- (2.7) and B (3.0),
depending on my assessment of the overall performance.
=====================================================

Topics

in approximate order with possible programming assignments signified by ***

Week 1

Programming Language Categories (section 1.5)
Programming Domains (section 1.2)
Language Evaluation Criteria (section 1.3)
Language design tradeoffs (section 1.6)
Syntax (Chapter 3)

Week 2

Syntax (Chapter 3)
Context Free Grammars / BNF (section 3.3.1)
Ambiguity (section 3.3.1)
Semantics (section 3.5)

Week 3

Semantics (continued) (section 3.5)
Lexical Analysis (section 4.2)
Parsers (beginning) (sections 4.3, 4.4, 4.5)

Week 4

Parsers (continued) (sections 4.3, 4.4, 4.5)

Week 5

Python (external reading/handouts)

Week 6

Python (continued) (external reading/handouts)
Regular expressions (external reading/handouts)
***Write a program in Python that implements a Recursive Descent parser for a small language

Week 7

Names (section 5.2)
Variables (section 5.3)
Bindings (section 5.4)

Week 8

Scope (sections 5.5, 5.6)
Primitive Data types (section 6.2)
Strings (section 6.3)
Enums (section 6.4)
etc.

Week 9

Arrays (sections 6.5, 6.6)
static, fixed stack-dynamic, stack-dynamic, fixed heap-dynamic, heap-dynamic
Records and Unions (sections 6.7 - 6.10)
Pointers (beginning) (section 6.11)

Week 10

Pointers (continued) (section 6.11)
dangling pointer problem (section 6.9)
memory leaks (section 6.9)
Functional language concepts (Chapter 15)
Scheme (beginning) (Chapter 15 and external reading/handouts)

Week 11

Scheme (Chapter 15 and external reading/handouts)

Week 12

Scheme (finish) (Chapter 15 and external reading/handouts)
***Write a set of Scheme programs

Week 13

TBD

=====================================================

Academic Integrity
Students are expected to follow the Skidmore College Honor Code and code of conduct to the fullest extent. A recommendation of a maximum penalty will be recommended for all violations of the Honor Code.
Here is our Improper Collaboration Policy.

=====================================================

Honor Code
I hereby accept membership in the Skidmore College community and, with full realization of the responsibilities inherent in membership, do agree to adhere to honesty and integrity in all relationships, to be considerate of the rights of others, and to abide by the college regulations.

=====================================================

Honor Code Statement for Examinations
While taking this examinations, I have not witnessed any wrongdoing, nor have I personally violated any conditions of the Skidmore College honor code.

=====================================================

Diversity and Inclusion
Skidmore College is committed to fostering a diverse and inclusive community in which members develop their abilities to live in a complex and interconnected world. Consistent with our educational mission, we recognize ourselves as a community that respects individual identities based on varying sociocultural characteristics such as race, ethnicity, gender identity and expression, sexual orientation, national origin, first language, religious and spiritual tradition, age, ability, socioeconomic status and learning style. We strive to create a socially just world that honors the dignity and worth of each individual, and we seek to build a community centered on mutual respect and openness to ideas—one in which individuals value cultural and intellectual diversity and share the responsibility for creating a welcoming, safe and inclusive environment. We recognize that our community is most inclusive when all members participate to their full capacity in the spirited and sometimes challenging conversations that are at the center of the college's educational mission.

=====================================================

Accommodating Students with Disabilities and Providing Accessibility
If you are a student with a disability and believe you will need academic accommodation, you must formally request accommodation from Meg Hegener, Coordinator of Student Access Services (mhegener@skidmore.edu). You will also need to provide documentation which verifies the existence of a disability and supports your request. For further information, please call 580- 8150 to contact Student Academic Services in Starbuck Center.

=====================================================

Sexual and Gender-Based Misconduct: Title IX Statement
Skidmore College considers sexual and gender-based misconduct to be one of the most serious violations of the values and standards of the College. Unwelcome sexual contact of any form is a violation of students’ personal integrity and their right to a safe environment and therefore violates Skidmore’s values. Sexual and gender-based misconduct is also prohibited by federal and state regulations. Skidmore College faculty are committed to supporting our students and upholding gender equity laws as outlined by Title IX. If a student chooses to confide in a member of Skidmore’s faculty or staff regarding an issue of sexual or gender-based misconduct, that faculty or staff member is obligated to tell Skidmore’s Title IX Coordinator or Title IX Deputy Coordinator. The Title IX Coordinator or Deputy Coordinator will assist the student in connecting with all possible resources for support and options for reporting both on and off campus. Identities and details will be shared only with those who need to know to support the student and to address the situation through the college’s processes. If the student wishes to confide in a confidential resource, the Counseling Center Staff, Health Services, and Victim Advocates (anonymous) are all options available. More information can be found at the Sexual and Gender-Based Misconduct website or by contacting the Title IX Coordinator, Joel Aure (jaure@skidmore.edu), 580-5708, or Deputy Coordinator for Student Affairs, Gabriela Melillo (gmelillo@skidmore.edu), 580-5022.

=====================================================

Grades
During Fall 2020 semester, students who opt for the S/U mode of grading will earn the grade of “CR” (credit) if they receive a C-, D+, or D for their coursework.

=====================================================

Attendance
Attendance policy: during the Fall 2020 semester, attendance will not be taken into account when determining your grade in this course and (if applicable) whether you will be permitted to take a final exam. Students remain responsible for making up any missed work.

=====================================================

Conscientious Religious Observance Policy
If religious observances cause absence from class, campus employment, athletic practice, and/or game days or necessitates accommodations, students should notify their faculty, coaches, or supervisors prior to the date(s) of their absence. New York State policy and Skidmore College policy mandates that students be allowed to make up academic work and/or campus employment requirements without penalty. These accommodations should not reduce the overall expectations of a course nor unduly burden the student requesting accommodation. Faculty must permit students to take a makeup examination without any penalty if they have to miss an examination due to religious observances. Similarly, faculty must permit students to submit missed assignments by an agreed upon due date, without penalty. Although not required, the College highly recommends that students submit written notification of the pending religious observances at the start of the semester or at least one week before the date.. As an option, students may use this form. Distributing the written notification during the first week of classes, campus employment, or the start of the athletic season gives students, faculty, coaches, or supervisors time to prepare for the absence. If a student, supervisor, coach, or faculty member feels the policy is being violated, they should contact the Dean of Faculty Office at 518-580-5705 (Palamountain 416), the Dean of Students Office at 518-580-5760 (Case Center 313), or Human Resources at 518-580-5800 (Barrett Center first floor).

=====================================================

COVID-19
The College expects all members of the community to adhere to health and safety protocols at all times, including when entering and exiting academic buildings and classrooms. In addition, we are all expected to pay attention to signage that directs traffic within buildings; clean classroom work stations at the beginning and end of classes; refrain from drinking and eating in the classroom; wear a mask at all times in public spaces, including in classrooms; and practice safe social distancing.