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:
-
Scala for Java programmers
Getting started with Scala in IntelliJ/sbt
online Scala exercises by 47 Degrees
Scala tutorial
Std Lib
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
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:
-
Scala for Java programmers
Getting started with Scala in IntelliJ/sbt
Horstmann’s Scala for the Impatient book (selected chapters)
online Scala exercises by 47 Degrees
Scala tutorial
Std Lib
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
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
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 EditionBy: Cay S. HorstmannPublisher: Addison-Wesley ProfessionalPub. Date: December 15, 2016Web ISBN-13: 978-0-13-454062-7Print ISBN-13: 978-0-13-454056-6Managing Concurrency in Mobile User Interfaces with Examples in Androidby Konstantin Läufer, George K ThiruvathukalPublisher: SpringerRelease Date: 2018ISBN: 978-3-319-93109-8Additional 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.)
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.
Todo
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.)
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.)
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.)
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.)
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