Course Links

Resources

External

Course Description and Goals

This course will examine foundational principles and concepts applicable across different programming languages and paradigms. Numerous practical applictions will illustrate and draw out the theoretical constructs under consideration in specific instances and contexts. Students will experience programming in multipe languages, and will be able to place each within the larger context and history of the discipline.

Learning Goals:

Prerequisite: CSC 111 or equivalent

Student Responsibilities

Successful learning is best motivated from within. We expect students to explore the topic of programming languages with an open mind and spirit of inquiry and exploration. Students will be responsible for weekly or bi-weekly assignments related to the current topic, either written or electronic depending on the week. There will be written miderm and final exams. As this is a four-credit course meeting for three hours per week, students should expect to spend approximately nine hours outside of class on readings and assignments. There will be two exams and a final project.

Course Materials

Textbook: Programming Language Pragmatics, Michael L. Scott, 4th ed. Web site

Also recommended but not required: Programming Languages: Application and Interpretation, Shriram Krishnamurthi

A Piazza group for this class will be available for questions and discussion related to the assignments. Questions about content and assignments should be publicly posted here for the benefit of the entire class. You may include brief (1-2 line) code excerpts with a question. Do not post large blocks of code; rather, take the time to pose a careful query that strips the issue down to its essentials.

Collaboration

Students are expected to complete the assignments for this course by themselves, and will not benefit from relying too much on others. Therefore, each student will be expected to follow this guideline: on individual assignments, nobody should see your code or written work on an assignment but yourself and the members of the course staff! By extension, you should not see anybody else's work either. With the sole exception of your partner on any assignment specifically designated by the instructor for work in pairs, sharing code or the final write-up of a homework assignment is a violation of course policy and may result in a referral to the Honor Board. Similarly, taking code or answers found from other sources (such as the internet) and representing it as your own is dishonest and uniformly prohibited. Use of small portions (a line or two) of found code is acceptable if you are scrupulous about documentation and attribution.

Despite the above, many forms of collaboration are specifically encouraged. On any assignment students may and should discuss algorithms, approaches, and issues that arise so long as they then compose their solutions separately. Students may also discuss any programs and code not directly related to the solution of a current or pending programming assignment. In this manner, students may assist each other while ensuring that each ultimately completes the assignments for themself. During in-class labs (as opposed to the homework assignments), students are encouraged to help each other work through problems, and may review each others' programs as necessary toward that goal. Finally, some assignments may be designated for pair programming; on these each pair may work together as one but should observe the usual restrictions above with regard to other pairs. More information about pair programming is here.

Use and Citation of Reference Materials

Students are encouraged to consult online or print references on all assignments and labs. Many of the languages we will study have online documentation which is designed to be used. Standard language references showing syntax, usage, class documentation, etc. need not be cited. If you use a fragment of code (one or more full lines) from some source other than the designated course textbook, you should document and credit the source with a comment in the code. As noted above, you must write the bulk of your program yourself -- just as you may use short quotations in an essay, but would not copy paragraphs wholesale. When in doubt, err on the side of including a citation, and consult the professor if you think you might be in danger of leaning too heavily on a source.

Electronic Device Policy

Used properly computers can serve as a learning tool. Students should bring a laptop to class if possible for use during lab activities. Many students also like to use their laptops to take notes, and perhaps to follow along during in-class demonstrations.

On the other hand, electronic devices can also serve as a potent source of distraction. Studies also show that the act of making handwritten notes brings cognitive benefits not seen with typing. Students are asked to be responsible in their use of electronic devices during class, and to ensure that they do not detract from their own educational experience or that of their fellow students. Activities such as email, text/chat, online shopping, etc. should all be conducted outside of class time.

Grading

(Updated 5/10/21)

In-class lab work and handouts are not graded; instead they form part of the participation grade. If you are in class on the day they are assigned, you get full credit. In case you miss class, you should complete the lab or handout for that day on your own and submit it to me within one week.

Normally, homework assignments submitted late will receive no credit. However, for weekly homeworks students may take some extensions on a limited basis by adhering to the extension policy. Extensions that have not been properly requested will result in assignments considered late and receiving no credit.

Students may also wish to view the instructor's policy for computing averaged grades.

Course Details

See here for the calendar of topics by week.

Professor:
Nick Howe
(he/him/his)
Ford Hall 354
585-3878

Office hours (zoom link)
Teaching Assistant:
Sakaiza Rasolofomanana Rajery
rasolofomananarajery@smith.edu
Meeting Times:
Lecture: 9:20-10:35 Sundays & Tuesdays (zoom link)
TA Hours:
Sundays & Thursdays, 7:00-8:00 PM (zoom link)

Additional Considerations

Please read the list of frequently asked questions.

We want everyone to succeed in this course. Students who would benefit from learning accommodations are encouraged to contact the professor at their earliest convenience so that necessary arrangements may be made.

Self-identity is important, and we make a concerted effort to use correct names and pronouns. Students who feel comfortable in doing so can help by alerting the instructor to any inadvertent errors.