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 2023

  • General format:

    • This is a on-campus, face-to-face class involving lectures, group activities, etc.

    • I will make an effort to record all lectures for later viewing through Sakai/Panopto. In addition, some prerecorded videos are available through Panopto.

    • To earn points for group activities or other in-class activities, you are required to participate during class time (in person or remotely) or make up for the work outside of class.

    • Estimated workload: 9 to 12 hours per week including class time.

  • Class time and location (fall 2023): Tue 16:15-18:45 in Cuneo 002, LSC

  • Communication: All communication regarding this class takes place in the classroom (verbal) and MS Teams (written). Most will be in the team-level channel specific to this term. For individual or group-level concerns, you may use direct individual or group messages in MS Teams; my user ID is klaufer@luc.edu. (To help me prioritize your class-related communication, please DO NOT use email!)

  • Instructor: Konstantin Läufer | GitHub | Google Scholar | Rate My Prof

  • TA: Giorgio Montenegro

  • Office hours:

    • Tue 18:45-19:15 outside of Cuneo 002 or in Cuneo 003 (after class, no appointment required)

    • Wed and Fri 14:00-15:45 in Doyle Hall 203 or online (by appointment via Calendly)

    • TA office hours TBD

  • Required materials:

  • Additional resources: Appendix: Resources

  • Grading:

    Additive point system:

    • 21 points: quizzes 0 3, 1-3 6 each

    • 24 points: two tests, 12 each

    • 37 points ug / 44 grad: projects 0a 2, 0b 3, 1a and 2a/b 6 each, 3a/b 7 each, 3c 7 (required for grad students) (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.)

    • 12 points: four group activities, 3 each

    • 5 points: presentation

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

    • 7 points: starting baseline for undergrads

    • 1 point extra credit: submission of course evaluation (submit screenshot of confirmation of submission)

    • various extra credit opportunities: project 3c 7 (ug), project 1b 6 (ug/grad)

    Max total: 111 points plus extra credit

    Grading schema (in points):

    • A 100 points

    • A- 96

    • B+ 92

    • B 88

    • B- 84

    • C+ 80

    • C 75

    • C- 70

    • D+ 65

    • D 60

    • F < 60

  • Academic integrity: LUC | CAS | Grad

  • Sakai site for this section (gradebook)

  • MS Team (mandatory subscription and participation in fall 2023 channel)

  • Important dates (tentative) for quizzes and tests:

    • Week 3 - Tue 12 September: quiz 0

    • Week 5 - Tue 26 September: quiz 1

    • Week 7 - Tue 10 October: NO CLASS (fall break)

    • Week 8 - Tue 17 October: test 1

    • Week 10 - Tue 31 October: quiz 2

    • Week 11 - Fri 3 November: last day to withdraw with W instead of WF

    • Week 12 - Tue 14 November: test 2

    • Week 13 - Tue 21 November: ONLINE SESSION (Thanksgiving break), details TBA

    • Week 16 (finals week) - Tue 12 December: quiz 3 followed by class session

  • Recording of class meetings: In this class, software will be used to record live class discussions. As a student in this class, your participation in live class discussions will be recorded. These recordings will be made available only to students enrolled in the class, to assist those who cannot attend the live session or to serve as a resource for those who would like to review content that was presented. All recordings will become unavailable to students in the class when the course has concluded. The use of all video recordings will be in keeping with the University Privacy Statement shown below.

  • Privacy Statement: Assuring privacy among faculty and students engaged in online and face-to-face instructional activities helps promote open and robust conversations and mitigates concerns that comments made within the context of the class will be shared beyond the classroom. As such, recordings of instructional activities occurring in online or face-to-face classes may be used solely for internal class purposes by the faculty member and students registered for the course, and only during the period in which the course is offered. Students will be informed of such recordings by a statement in the syllabus for the course in which they will be recorded. Instructors who wish to make subsequent use of recordings that include student activity may do so only with informed written consent of the students involved or if all student activity is removed from the recording. Recordings including student activity that have been initiated by the instructor may be retained by the instructor only for individual use.

11.3. Section: 001 Fall 2022

  • General format:

    • This is a on-campus, face-to-face class involving lectures, group activities, etc.

    • I will make an effort to record all lectures for later viewing through Sakai/Panopto. In addition, some prerecorded videos are available through Panopto.

    • To earn points for group activities or other in-class activities, you are required to participate during class time (in person or remotely) or make up for the work outside of class.

    • Estimated workload: 9 to 12 hours per week including class time.

  • Class time and location (fall 2022): Tue 16:15-18:45 in SES 122, LSC

  • Communication: All communication regarding this class takes place in the classroom (verbal) and MS Teams (written). Most will be in the team-level channel specific to this term. For individual or group-level concerns, you may use direct individual or group messages in MS Teams; my user ID is klaufer@luc.edu. (To help me prioritize your class-related communication, please DO NOT use email!)

  • Instructor: Konstantin Läufer | GitHub | Google Scholar | Rate My Prof

  • TA: Álvaro de Landaluce

  • Office hours:

    • Tue 18:45-19:15 in SES 122 (after class, no appointment required)

    • Thu 18:45-18:55 in Cuneo Hall 104 (after class, no appointment required)

    • Wed and Fri 13:30-15:30 in Doyle Hall 203 or online (by appointment via Calendly)

    • TA office hours TBD

  • Required materials:

  • Additional resources: Appendix: Resources

  • Grading:

    Additive point system:

    • 21 points: quizzes 0 3, 1-3 6 each

    • 24 points: two tests, 12 each

    • 44 points ug / 50 grad: projects 0a 2, 0b 3, 1a and 2a/b 6 each, 3a-c 7 each, 1b 6 (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.)

    • 6 points: two group activities, 3 each

    • 5 points: presentation

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

    • 6 points: starting baseline for undergrads

    • 1 point extra credit: submission of course evaluation (submit screenshot of confirmation of submission)

    • various extra credit opportunities

    Max total: 111 points plus extra credit

    Grading schema (in points):

    • A 100 points

    • A- 96

    • B+ 92

    • B 88

    • B- 84

    • C+ 80

    • C 75

    • C- 70

    • D+ 65

    • D 60

    • F < 60

  • Academic integrity: LUC | CAS | Grad

  • Sakai site for this section (gradebook)

  • MS Team (mandatory subscription and participation in fall 2022 channel)

  • Important dates (tentative) for quizzes and tests:

    • Week 2 - Tue 6 September: ONLINE CLASS, details TBA

    • Week 3 - Tue 13 September: quiz 0

    • Week 5 - Tue 27 September: quiz 1

    • Week 7 - Tue 11 October: NO CLASS (fall break)

    • Week 8 - Tue 18 October: test 1

    • Week 10 - Tue 1 November: quiz 2

    • Week 11 - Fri 4 November: last day to withdraw with W instead of WF

    • Week 12 - Tue 15 November: test 2

    • Week 13 - Tue 22 November: ONLINE CLASS (Thanksgiving break), details TBA

    • Week 16 (finals week) - Tue 13 December: quiz 3 followed by class session

  • Recording of class meetings: In this class, software will be used to record live class discussions. As a student in this class, your participation in live class discussions will be recorded. These recordings will be made available only to students enrolled in the class, to assist those who cannot attend the live session or to serve as a resource for those who would like to review content that was presented. All recordings will become unavailable to students in the class when the course has concluded. The use of all video recordings will be in keeping with the University Privacy Statement shown below.

  • Privacy Statement: Assuring privacy among faculty and students engaged in online and face-to-face instructional activities helps promote open and robust conversations and mitigates concerns that comments made within the context of the class will be shared beyond the classroom. As such, recordings of instructional activities occurring in online or face-to-face classes may be used solely for internal class purposes by the faculty member and students registered for the course, and only during the period in which the course is offered. Students will be informed of such recordings by a statement in the syllabus for the course in which they will be recorded. Instructors who wish to make subsequent use of recordings that include student activity may do so only with informed written consent of the students involved or if all student activity is removed from the recording. Recordings including student activity that have been initiated by the instructor may be retained by the instructor only for individual use.

11.4. Section: 001 Fall 2021

  • General format:

    • This is a on-campus, face-to-face class involving lectures, group activities, etc.

    • I will make an effort to record all lectures for later viewing through Sakai/Panopto. In addition, some prerecorded videos are available through Panopto.

    • To earn points for group activities or other in-class activities, you are required to participate in class or make up for the work outside of class.

    • Estimated workload: 9 to 12 hours per week including class time.

  • Class time and location (fall 2021): Tue 17:30-20:00 in Cuneo Hall 217, LSC

  • Communication: All communication regarding this class takes place in the classroom (verbal) and MS Teams (written). Most will be in the team-level channel specific to this term. For individual or group-level concerns, you may use direct individual or group messages in MS Teams; my user ID is klaufer@luc.edu. (To help me prioritize your class-related communication, please DO NOT use email!)

  • Instructor: Konstantin Läufer | GitHub | Google Scholar | Rate My Prof

  • TA: Monica Sieklucki

  • Office hours:

    • Tue 20:00-20:30 in Cuneo Hall 217

    • Thu 20:00-20:30 in Crown Center 105

    • by appointment via Calendly (Tue, Thu, Fri afternoons)

    • TA office hours TBD

  • Required materials:

  • Additional resources: Appendix: Resources

  • Grading:

    Additive point system:

    • 21 points: quizzes 0 3, 1-3 6 each

    • 24 points: two tests, 12 each

    • 44 points ug / 50 grad: projects 0a 2, 0b 3, 1a and 2a/b 6 each, 3a-c 7 each, 1b 6 (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.)

    • 6 points: two group activities, 3 each

    • 5 points: presentation

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

    • various extra credit opportunities

    Max total: 105 undergraduate / 111 graduate

    Undergraduate grading schema:

    • A 93

    • A- 90

    • B+ 87

    • B 83

    • B- 80

    • C+ 75

    • C 70

    • C- 65

    • D+ 60

    • D 50

    • F < 50

    Graduate grading schema:

    • A 98

    • A- 95

    • B+ 92

    • B 88

    • B- 85

    • C+ 80

    • C 75

    • C- 70

    • D+ 65

    • D 55

    • F < 55

  • Academic integrity: LUC | CAS | Grad

  • Sakai site for this section (gradebook)

  • MS Team (mandatory subscription and participation)

  • Important dates (tentative) for quizzes and tests:

    • Week 3 - Tue 14 September: quiz 0

    • Week 5 - Tue 28 September: quiz 1

    • Week 7 - Tue 12 October: NO CLASS (fall break)

    • Week 8 - Tue 19 October: test 1

    • Week 10 - Tue 2 November: quiz 2

    • Week 11 - Fri 12 November: last day to withdraw with W instead of WF

    • Week 12 - Tue 16 November: test 2

    • Week 13 - Tue 23 November: ONLINE CLASS (Thanksgiving break), details TBA

    • Week 16 (finals week) - Tue 14 December: quiz 3 followed by class session

  • Recording of class meetings: In this class, software will be used to record live class discussions. As a student in this class, your participation in live class discussions will be recorded. These recordings will be made available only to students enrolled in the class, to assist those who cannot attend the live session or to serve as a resource for those who would like to review content that was presented. All recordings will become unavailable to students in the class when the course has concluded. The use of all video recordings will be in keeping with the University Privacy Statement shown below.

  • Privacy Statement: Assuring privacy among faculty and students engaged in online and face-to-face instructional activities helps promote open and robust conversations and mitigates concerns that comments made within the context of the class will be shared beyond the classroom. As such, recordings of instructional activities occurring in online or face-to-face classes may be used solely for internal class purposes by the faculty member and students registered for the course, and only during the period in which the course is offered. Students will be informed of such recordings by a statement in the syllabus for the course in which they will be recorded. Instructors who wish to make subsequent use of recordings that include student activity may do so only with informed written consent of the students involved or if all student activity is removed from the recording. Recordings including student activity that have been initiated by the instructor may be retained by the instructor only for individual use.

11.5. Sections: 001/002 Fall 2020

  • General format: This is an online “flipped” class.

    • About 90 minutes of weekly class time will consist of prerecorded videos; I will provide more details on these shortly.

    • The remaining 60 minutes will consist of two synchronous, interactive Zoom sessions, of which you are expected to attend at least one; I will provide links to these shortly in MS Teams (see below).

  • Class time (fall 2020): You are expected to attend at least one of these synchronous, interactive sessions. Zoom links will be available on MS Teams shortly.

    • main synchronous session: Tue 19:00-20:00 on Zoom

    • alternate synchronous session: Tue 14:00-15:00 on Zoom

  • Communication: All communication regarding this class takes place in Zoom (verbal) and MS Teams (written). Most will be in the team-level channel specific to this term. For individual or group-level concerns, you may use direct individual or group messages in MS Teams; my user ID is klaufer@luc.edu. (Please DO NOT use email!)

  • Instructor: Konstantin Läufer

  • Office hour: Wed 13:45-14:45 and Fri 10:30-11:45 on Zoom (appointment recommended), other times available on request

  • TA: Maya Gocal-Kappos

  • Office hour: Tue 10-11:15 and Wed 10:15-11:30

  • Required texts:

    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
    Managing Concurrency in Mobile User Interfaces with Examples in Android
    by Konstantin Läufer, George K Thiruvathukal
    Publisher: Springer
    Release Date: 2018
    ISBN: 978-3-319-93109-8
  • 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)

  • MS Team (mandatory subscription and participation)

  • Important dates (tentative) for take-home quizzes and tests:

    • Week 4 - Mon 14 September: quiz 1

    • Week 7 - Mon 5 October: test 1

    • Week 10 - Mon 26 October: quiz 2

    • Week 13 - Mon 16 November: test 2

    • Week 16 (finals week) - available Fri 4 December, due Wed 9 December: quiz 3

  • Recording of Zoom class meetings: In this class software will be used to record live class discussions. As a student in this class, your participation in live class discussions will be recorded. These recordings will be made available only to students enrolled in the class, to assist those who cannot attend the live session or to serve as a resource for those who would like to review content that was presented. All recordings will become unavailable to students in the class when the course has concluded. The use of all video recordings will be in keeping with the University Privacy Statement shown below.

  • Privacy Statement: Assuring privacy among faculty and students engaged in online and face-to-face instructional activities helps promote open and robust conversations and mitigates concerns that comments made within the context of the class will be shared beyond the classroom. As such, recordings of instructional activities occurring in online or face-to-face classes may be used solely for internal class purposes by the faculty member and students registered for the course, and only during the period in which the course is offered. Students will be informed of such recordings by a statement in the syllabus for the course in which they will be recorded. Instructors who wish to make subsequent use of recordings that include student activity may do so only with informed written consent of the students involved or if all student activity is removed from the recording. Recordings including student activity that have been initiated by the instructor may be retained by the instructor only for individual use.

11.6. 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.7. 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.8. 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.9. 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.10. Detailed Course Outline

  • business and software engineering contexts (1 week)

    • software requirements

      • functional requirements

      • nonfunctional requirements

    • development process

      • testing

      • refactoring

      • automation

    • design principles and patterns

      • separation of concerns

      • parametricity

      • SOLID

      • GoF/POSA

  • imperative and object-oriented programming (2 weeks)

    • console applications

    • constant-space complexity

    • logging

    • domain modeling

    • using traits for modularity and dependency injection

  • functional programming (4 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 (4 weeks)

    • language design space

    • scanners (lexical analyzers)

    • parsers (syntax analyzers)

    • interpreters and compilers

    • domain-specific languages

  • concurrent and parallel programming (3 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

11.11. Key Resources