General Information


Geoffrey Towell
251 Park Science Building
gtowell at brynmawr dot edu


Lecture Hours Monday / Wednesday 1:10 - 2:30
Room TBA
Lab Monday 2:40 - 4:00
Office Hours M 10am-11am. Thursday 2:30pm-3:30pm
Also by appointment
Zoom Meeting code: 232 840 6920. Password: given in class, or ask me
Course Description

An introduction to the study of programming languages. Where do programming languages come from and how do they evolve? And why should a programmer choose one over another? This course explores these topics by covering programming language features and paradigms, including object-oriented, functional, and imperitive.

The course will focus on general structures common to programming languages; focusing on why those structures exist, the various ways in which those structures are implemented, and how to use them.

In addition, the course will look at programming techniques in two languages: Go and Kotlin. While these languages have many similarities; programming in the two will be very different. In particular, programming in Kotlin will take an almost pure functional approach which Go will be imperitive.

Computer Lab Park 231
Instructions for using the lab computers
Remote accessable lab computer status


Programming Language Pragmatics
by M. Scott

Not required But I have found useful
The Go Programming Language
by A. Donovan and B. Kernigan

Not required But I have found useful
Atomic Kotlin
by B. Eckel and S. Isakova

Important Dates


There will be homework assignments approximately weekly. Homework will be electronically submitted. The homeworks will typically be small programming problems that are linked to class discussion. Programming is expected to take less than 5 hours per week.

All assignments must be turned in on time. If there are compelling reasons why you cannot turn in an assignment on time, you must ask for permission at least 48 hours in advance of the due date.

Despite my best efforts, homeworks may have sections that are not quite correct. If you find an error, let me know. If I agree that the issue is an issue and you have told me of the issue at least 48 hours prior to the due date then I will give bonus points as follows:

3 points for the first issue reported
2 points for the second issue reported
1 point for the third issue reported
Ordering is based on date of email recipt. One bonus per person per assignment.

All programming assignments must abide by the following standards.

Posted code samples will -- almost always -- adhere to these standards. (Code shown in class may not so that it can fit on screens.)

All programming assignments must be accompanied by a README file. I will read, and often will respond, to all README text. See the file for a description of the expected contents.


Labs will often look like programming assignments, just smaller. All labs can be done on the CS department lab machines or on personal machines (assuming you have installed the appropriate software.)


This course is intended to be fairly free-flowing with a lot of discussion. Therefore, I will not normally publish powerpoint lecture notes. I will try to restrict my commentary to topics covered in the text.