Haskell logo CIS 5520: Advanced Programming

Fall 2023

  • Home
  • Schedule
  • Homework
  • Resources
  • Software
  • Style guide

Logistics
Course CIS 5520, Fall 2023
Time MW 12:00 - 1:30 PM
Location 3401 Walnut, 401B
Prerequisite Four courses involving significant programming and a discrete mathematics or modern algebra course
People
Instructor Stephanie Weirich, Levine 510
Teaching assistants Jonathan Chan, Cassia Torczon, Irene Yoon
Cassia's office hours Wednesdays, 4PM-5PM, Levine 612
Irene's office hours Tuesdays, 12-1PM, Levine 501 bump space
Jon's office hours Wednesdays, 2-3PM, GRW 3rd floor bump space
Stephanie's office hours Tuesdays, 2-3:30PM, Levine 510
Administrative assistant Cheryl Hickey, Levine 502
Tools
Lecture notes / HW Github
Discussion / Questions Ed
Syllabus / Quizzes Canvas
HW Submission / Grades Gradescope

Please complete the intro survey before the first day of class.

The goals of this course are twofold: (1) to take good programmers and turn them into excellent ones, and (2) to introduce them to a range of modern software engineering practices, in particular those embodied in typed, functional programming languages.

FAQ

  1. How can I register? Enrollment for CIS 5520 is through the CIS waitlist. If you do not have a permit on the first day of class you should come to class anyways. Even if you are on the waitlist, you should still fill out the intro survey.

  2. Where is the course syllabus? The logistical aspects of the course are available on the pennkey-protected Canvas page. We will also discuss these logistics during the first meeting.

  3. Will the course be largely about functional programming in Haskell? Do you expect to teach much material that would apply to non-functional programming?

The focus of this course will be functional programming in Haskell. The goal is to bend your mind about what programming is, and Haskell is an excellent tool for the job. Of course you will learn things that will apply to other languages and paradigms, but we'll leave that exploration to you.

  1. Do you expect that the course will involve any large projects, or mostly smallish weekly assignments?

It will be smallish weekly assignments. However, "small" does not necessarily mean "easy," because Haskell programs can do a lot with just a few lines of code!

  1. Will it be important to know much about functional programming before starting the course?

You don't need to know anything about functional programming before starting.

  1. Will this be an active learning class?

Yes! You will be expected to attend every class and actively participate. You will be asked to read and complete course materials before class as well as complete exercises during class.

Design adapted from Minimalistic Design | Powered by Pandoc and Hakyll