11. Appendix: Course Syllabi

These are the official course syllabi for the most recent section(s) of this course.

11.1. Course: COMP 371/471 Programming Languages

11.2. Section: 001 Fall 2019

  • Class time and location (Fall 2019): Tue 16:15-18:45 in Cuneo Hall 302, LSC

  • Instructor: Konstantin Läufer

  • Office hour: Tue/Thu 14:00-15:00 in Doyle Hall Room 201 (building #6 on this map of Lake Shore Campus), and by appointment

  • TA: Allan Miller

  • Office hour: Wed 12:00-16:00 in Doyle Hall Room 308

  • Required text: Scala for the Impatient, Second Edition By: Cay S. Horstmann Publisher: Addison-Wesley Professional Pub. Date: December 15, 2016 Web ISBN-13: 978-0-13-454062-7 Print ISBN-13: 978-0-13-454056-6 access free on Safari and/or download from Lightbend

  • Additional resources: Appendix: Resources

  • Grading (tentative):

    • 45% quizzes & tests

    • 50% projects & presentations (Percentage effort on each group project will be measured by an end-of-term questionnaire. Group project grades and/or final course grades may be adjusted to account for significant discrepancies in effort among group members.)

    • 5% participation (in-class and online, including announcements of and reports from relevant professional events, GitHub issues and PRs for course examples, etc.)

  • Ground rules

  • Sakai site for this section (gradebook)

  • Slack team (mandatory subscription)

  • Important dates (tentative):

    • Tue 17 September: quiz 1

    • Tue 1 October: test 1

    • Tue 8 October: NO CLASS - fall break

    • Tue 22 October: quiz 2

    • Tue 12 November: test 2

    • Tue 10 December 16:15-17:15: test 3

11.3. Section: 001 Fall 2018

  • Instructor: Konstantin Läufer

  • Class time and location (Fall 2018): Tue and Thu 13:00-14:15 in Cuneo Hall 202, LSC

  • Office hour: Tue/Thu 14:30-15:30 and Thu 10:00-11:00 in Doyle Hall Room 201 (building #6 on this map of Lake Shore Campus), and by appointment

  • Required text: Scala for the Impatient, Second Edition By: Cay S. Horstmann Publisher: Addison-Wesley Professional Pub. Date: December 15, 2016 Web ISBN-13: 978-0-13-454062-7 Print ISBN-13: 978-0-13-454056-6 access free on Safari and/or download from Lightbend

  • Additional resources: Appendix: Resources

  • Grading (tentative):

    • 45% quizzes & exams

    • 50% projects & presentations (Percentage effort on each group project will be measured by an end-of-term questionnaire. Group project grades and/or final course grades may be adjusted to account for significant discrepancies in effort among group members.)

    • 5% participation (in-class and online, including announcements of and reports from relevant professional events, GitHub issues and PRs for course examples, course evaluation, etc.)

  • Ground rules

  • Sakai site for this section (gradebook)

  • Slack team (mandatory subscription)

  • Important dates:

    • Thu 20 September: quiz 1

    • Thu 4 October: test 1

    • Tue 9 October: NO CLASS - fall break

    • Thu 25 October: quiz 2

    • Thu 15 November: test 2

    • Tue 20 November: remote lecture/office hour

    • Fri 14 December 13:00-14:00: test 3

11.4. Section: 001 Spring 2018

  • Instructor: Konstantin Läufer

  • Class time and location (Spring 2018): Tue and Thu 08:30-09:30 in Cuneo Hall 103, LSC

  • Office hour: Thu 09:45-11:00 in Doyle Hall Room 202 (building #6 on this map of Lake Shore Campus), and by appointment

  • Required text: Scala for the Impatient, Second Edition By: Cay S. Horstmann Publisher: Addison-Wesley Professional Pub. Date: December 15, 2016 Web ISBN-13: 978-0-13-454062-7 Print ISBN-13: 978-0-13-454056-6 available free on Safari

  • Additional resources: Appendix: Resources

  • Grading (tentative):

    • 45% quizzes & exams

    • 50% projects & presentations (Percentage effort on each group project will be measured by an end-of-term questionnaire. Group project grades and/or final course grades may be adjusted to account for significant discrepancies in effort among group members.)

    • 5% participation (in-class and online, including announcements of and reports from relevant professional events, GitHub issues and PRs for course examples, etc.)

  • Ground rules

  • Sakai site for this section (gradebook)

  • Slack team (mandatory subscription)

  • Important dates:

    • Thu 8 February: quiz 1

    • Tue 20 February: test 1

    • Tue 6 March: NO CLASS - spring break

    • Thu 8 March: NO CLASS - spring break

    • Thu 22 March: quiz 2

    • Thu 12 April: test 2

    • Sat 5 May 09:00-10:00: test 3

11.5. Section: 001 Spring 2017

  • Instructor: Konstantin Läufer

  • Class time and location (Spring 2017): Tue 14:45-17:15, Mundelein Center 607, LSC

  • Office hour: Tue 17:15-18:00 in Mundelein Center 607, LSC, and by appointment

  • Required text: Programming in Scala, Third Edition By: Martin Odersky; Lex Spoon; Bill Venners Publisher: Artima Press Pub. Date: April 28, 2016 ISBN-10: 0-9815316-8-7 ISBN-13: 978-0-9815316-8-7 available free on Safari

  • Grading (tentative):

    • 45% quizzes & exams

    • 50% projects & presentations (Percentage effort on each group project will be measured by an end-of-term questionnaire. Group project grades and/or final course grades may be adjusted to account for significant discrepancies in effort among group members.)

    • 5% participation (in-class and online, including announcements of and reports from relevant professional events, GitHub issues and PRs for course examples, etc.)

  • Ground rules

  • Sakai site for this section (gradebook)

  • Slack team (mandatory subscription)

  • Important dates

    • Tue 7 February: quiz 1

    • Tue 7 March: NO CLASS - spring break

    • Tue 14 March: test 1

    • Tue 4 April: quiz 2

    • Tue 18 April: test 2

    • Tue 2 May 16:15-18:15: test 3

11.6. Detailed Course Outline

  • functional programming (6 weeks)

    • defining algebraic data types

      • scalars: enumerations

      • sublinear structures: numbers, option

      • linear structures: lists, maps

      • nonlinear structures: trees

    • implementing behaviors on algebraic data types

      • pattern matching

      • recursion

    • higher-order functions

    • predefined types and their behaviors

    • recursion patterns

    • higher-kinded types

  • programming language representation and interpretation/execution (5 weeks)

    • language design space

    • scanners (lexical analyzers)

    • parsers (syntax analyzers)

    • interpreters and compilers

    • domain-specific languages

  • concurrent and parallel programming (4 weeks)

    • parallel collections

    • futures and promises

    • progress reporting and cancelation

    • asynchronous programming/reactive extensions (Rx)

    • advanced mechanisms

      • explicit threads

      • actors

      • software-transactional memory

      • task-parallel library

      • functional data structures