ad majorem Dei gloriam

CPS 452: Emerging Programming Languages

Dynamic Bindings for Engineering Software

Department of Computer Science, University of Dayton

Fall 2019

Table of Contents (TOC)

Course Description

Emerging Programming Languages (dynamic bindings for engineering software) is an advanced undergraduate and graduate course on the recent trend in programming languages toward more dynamic, functional, multi-paradigm languages. The course is an exploratory odyssey through a variety of emerging languages, such as Ruby and Erlang, with a focus on showcasing and creatively harnessing the niche features in each language to solve non-trivial, pragmatic programming problems faced by software engineers, particularly in the domains of game programming and Internet applications. Topics include new concurrency and object models, type systems, and security. The course emphasizes alternative language features such as continuations, currying, and lazy evaluation, and the use of these features in novel application areas such as web interaction management. This is a programming intensive course. Languages anticipated to be studied include R, Erlang/Elixir, Clojure, Kotlin, and Lua, among others. This course assumes no prior experience with any of the covered languages, but does require an open mind, an intellectual and scientific curiosity, and a passion for languages.

Course Details

Pre-requisite:
CPS 350 (Data Structures & Algorithms) (with a recommended minimum grade of B).
Meeting times:
M W 3:35pm-4:50pm, Miriam Hall 203.
Instructor:
Dr. Perugini, e-mail id: sperugini1, tel: 229-4079, office: AN 145
OHs: M 11:00am-noon & 1:15pm-2:15pm; W 11:00am-noon & 1:15pm-2:15pm; Th 3:30pm-4:30pm (only when classes are in session); & by appointment.
Teaching assistant:

TOC

Required Books

    [PLCI] Programming Languages: Concepts and Implementation by S. Perugini. 2019. Draft (Available as a Resource in Isidore).
    [SLSW] Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by B.A. Tate. Pragmatic Programmers, Dallas, TX, 2010. ISBN-13:978-1-934356-59-3 (textbook webpage contains links to the source code of all programs in the text).
    [SCMSW] Seven Concurrency Models in Seven Weeks: When Threads Unravel by P. Butcher. Pragmatic Programmers, Dallas, TX, 2014. ISBN-13:978-1-937785-65-9 (textbook webpage contains links to the source code of all programs in the text). An eBook of [SCMSW] is available free to all UD students in the library's eContent collection. To access it conduct a search for the title in the library's catalog at library.udayton.edu.

Steps to access [SCMSW] off-campus:
  1. Go to https://login.libproxy.udayton.edu/menu.
  2. Login using your standard UD credentials.
  3. Click on the link labeled: EBSCO Ebook Collection (formerly NetLibrary).
  4. This link will will take you to a page were you can perform a search. Search for "Seven concurrency models in seven weeks: When threads unravel" Click on "eBook Full Text".

    Note that there is a limit on how many people can view the book and once someone checks it out, no one else can use it. Also, if you incorrectly break your session (closing the page), the book remains checked out for a period of time and you cannot use the book in until the session ends.
    [SMLSW] Seven More Languages in Seven Weeks: Languages that are Shaping the Future by B.A. Tate, F. Daoud, I. Dees, & J. Moffit. Pragmatic Programmers, Dallas, TX, 2014. ISBN-13:978-1-941222-15-7 (textbook webpage contains links to the source code of all programs in the text). An eBook of [SMLSW] is available free to all UD students in the library's eContent collection. To access it conduct a search for the title in the library's catalog at library.udayton.edu. Steps to access [SMLSW] off-campus: follow same steps above for accessing [SCMSW] (with the title of this book).

TOC

Course Wordle

CPS 452: Emerging Programming Languages/Fall 2019

TOC

Course Objectives

TOC

Course Outline

Course outline, lecture notes, & homework & reading assignments (to be completed prior to class):
  1. FUNDAMENTALS
    1. Introduction to emerging programming languages course & Introduction to programming languages (programming language concepts, nomenclature, and paradigms; [PLCI] Ch 1): Aug 21 26

    2. Formal Languages & Grammars ([PLCI] Ch 2): self-study

    3. Programming Language Implementation ([PLCI] Ch 4): self-study

  2. FUNCTIONAL PROGRAMMING ([PLCI] Ch 5)
    1. λ-calculus & S-expressions [A Brief Introduction to Lisp, installing & using Racket, functional programming resources, The Scheme Programming Language]: Aug 26
    2. Building data structures, such as binary trees, with lists: Aug 28
    3. let, let*, & letrec: Sep 4
    4. Closures [about closures] ([PLCI] Ch 11): Sep 9 11 16
    5. Binding & scope [PLCI] Ch 6): Sep 9 11 16
    6. Closure data representation strategy ([PLCI] Ch 9): Sep 16

    7. Control ([PLCI] Ch 13; [TSPL] §§ 3.2-3.4, [TSS] Ch 13, 19)
      1. tail calls ([TSPL] § 3.2), continuations, & continuation-passing style ([TSPL] § 3.4, [TSS] Ch19): Sep 18 30
      2. first-class continuations & call/cc [about continuations] ([TSPL] § 3.3, [TSS] Ch13): Sep 18 23 30

    8. Homoinconicity [The Roots of LISP]: Sep 11 16 18 Oct 14

    9. Strong Typing & Type Inference ([PLCI] Ch 7): Sep 25
      1. Introduction to Haskell [installing & using GHC] & ML [installing & using SML-NJ] (Appendices C & B; types and type systems): Sep 25 Oct 7

    10. Currying & Higher-order Functions ([PLCI] Ch 8): Sep 25 30 Oct 7 9 14

    11. Type Systems & Data Abstraction ([PLCI] Ch 9)
      1. inductive data types & abstract syntax: Oct 9
      2. type systems (in Haskell; & structures, signatures, & functors in ML; [PIH] Ch 10, [EMLP] Ch 6, 8): Oct 9

    12. Input/Output
      1. I/O in Haskell: self-study
      2. string I/O in Haskell & ML ([PLCI] Appendix B): self-study
      3. Hoogle (the Haskell API search engine): self-study

    13. Parameter Passing ([PLCI] Ch 12)
      1. survey of parameter-passing mechanisms: self-study
      2. lazy evaluation & thunks (call-by-name & call-by-need): Oct 16
      3. lazy evaluation in Haskell ([PIH] Ch 4, 5, 12): Nov 6
      4. list and generator comprehensions in Python ([PLCI] Appendix D): Dec 4

  3. EMERGING PROGRAMMING LANGUAGES
    1. the miniKanren programming language (minikanren.org): Oct 21 23 28

    2. the Kotlin programming language (kotlinlang.org): Oct 28 30

    3. the Clojure programming language (clojure.org): Oct 30 Nov 4

    4. F# (fsharp.org): Nov 6 & 11

    5. TypeScript (typescriptlang.org): Nov 13

    6. Swift (swift.org): Nov 13

    7. R (r-project.org): Nov 18 & 20

    8. Idris (idris-lang.org): Nov 25

  4. DECLARATIVE/LOGIC PROGRAMMING ([PLCI] Ch 14): self-study
    1. First-order predicate logic (Horn clauses, resolution, & unification): self study
    2. Logic programming in PROLOG [A Brief Introduction to PROLOG, installing & using SWI-PROLOG, Logic programming resources, Prolog Programming A First Course]
      1. facts, rules, & goals: self-study
      2. control & cut: self-study

  5. OBJECT ORIENTATION & CONCATENATIVE PROGRAMMING ([PLCI] Ch 15)
    1. Object-orientation: Message Passing and Dynamic Binding ([QTOL]) [object-oriented programming resources]: self-study
    2. Squeak ([QTOL]) [A Brief Introduction to Smalltalk, installing & using Squeak]: self-study
    3. Reflection (pp. 169-171): self-study

  6. CONCLUSION
    1. course reflection (terms & themes; ACM A.M. Turing award winners with contributions related to languages): Dec 4
    2. Final project presentations: Dec 9, 10:10pm-noon, Miriam Hall 203

TOC

Homeworks

Homework Assigned Due Total points
Homework #1 Aug 21 Aug 26 40
Homework #2 Aug 28 Sep 9 55
Homework #3 Sep 9 Sep 23 40
Homework #4 Sep 23 Sep 30 75
Homework #5 Sep 30 Oct 14 70
Homework #6 Oct 14 Nov 4 40
Homework #7 Nov 6 Nov 18 15
Total Homework Points: 220 (+ 115 EC)

TOC

Homework #1

Assigned: August 26
Due: (problem 1) August 26 & (problem 2) August 28, 3:35pm

Total points: 40 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria


  1. (10 points) [PLCI] Conceptual Exercise 1.9.30.

  2. (30 points) [PLCI] Programming Exercise 3.5.14 (you will need to do Programming Exercise 3.5.13 first). You may not use Java or C++ for this exercise.

TOC

Homework #2

Assigned: August 28
Due: September 9, 3:35pm

Total points: 55 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria

Note: For full credit, these functions must follow Functional Programming Design Guidelines in [PLCI] (Table 5.6)
  1. (5 points) [PLCI] Programming Exercise 5.10.3 (start with a solution to 5.4.7).

  2. (5 points) [PLCI] Programming Exercise 5.10.4.

  3. (5 points) [PLCI] Programming Exercise 5.7.2.

  4. (15 points) [PLCI] Programming Exercise 5.10.7 (recommended, not required, to complete 5.10.8 because mergesort is naturally recursive).

  5. (5 points) [PLCI] Programming Exercise 5.10.9 (recommended, not required, to complete 5.10.10 because mergesort is naturally recursive).

  6. (10+10=20 points) Problems a) and b) on handout distributed in class.

TOC

Homework #3

Assigned: September 9
Due: September 23, 3:35pm

Total points: 40 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria


  1. (10 points) [PLCI] Programming Exercise 5.6.4

  2. (5 points) [PLCI] Conceptual Exercise 6.11.1.

  3. (5 points) [PLCI] Conceptual Exercise 6.11.2.

  4. (10 points) [PLCI] Programming Exercise 6.10.15.

  5. (10 points) [PLCI] Programming Exercise 9.9.1

  6. (+5 ec points) [PLCI] Programming Exercise 6.9.9. Find a language other than COMMON LISP or Perl to use.

TOC

Homework #4

Assigned: September 23
Due: September 30, 3:35pm

Total points: 75 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria


  1. (5 points) [PLCI] Programming Exercise 13.7.7.

  2. (5 points) [PLCI] Programming Exercise 13.8.21.

  3. (10 points) [PLCI] Programming Exercise 13.8.15.

  4. (5 points) [PLCI] Programming Exercise 13.3.9.

  5. (5 points) [PLCI] Programming Exercise 13.3.19.

  6. (10 points) [PLCI] Programming Exercise 13.3.11.

  7. (15 points) [PLCI] Programming Exercise 13.5.2 (requires you to solve Programming Exercises 13.4.6 and 13.4.7 first).

  8. (10 points) [PLCI] Programming Exercise 13.6.6.

  9. (5 points extra credit) [PLCI] Programming Exercise 13.8.12.

  10. (10 points) [PLCI] Programming Exercise 13.8.22.

  11. (5 points extra credit) [PLCI] Programming Exercise 13.6.7.

TOC

Homework #5

Assigned: September 30
Due: October 14, 2:00pm

Total points: 70 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria


  1. (10 points) [PLCI] Conceptual Exercise 17.6.1.

  2. (15 points) [PLCI] Programming Exercise 5.10.12

  3. (5 points) [PLCI] Programming Exercise 8.3.22 or 8.3.23. Demonstrating the practically of your solution to this problem in the solution to another problem is worth 5 points of extra credit.

  4. (10 points) [PLCI] Programming Exercise 8.4.21.

  5. (10 points) [PLCI] Programming Exercise 8.4.24.

  6. (10 points) [PLCI] Conceptual Exercise 8.3.12.

  7. (10 points) [PLCI] Programming Exercise 9.4.5 or 9.4.6.

TOC

Homework #6

Assigned: October 14
Due: November 4, 2:00pm

Total points: 40 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria


  1. (15 points) [PLCI] Programming Exercise 12.7.12.

  2. (15 points) [PLCI] Programming Exercise 12.8.3.

  3. (10 points) [PLCI] Conceptual Exercise 17.6.3.

TOC

Homework #7

Assigned: November 6
Due: November 13, 2:00pm

Total points: 15 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria


  1. (5 points) [PLCI] Programming Exercise 12.8.2.

  2. (10 points) [PLCI] Programming Exercise 5.10.11. Submit your test cases with your function.

TOC

Language Presentation & Paper/Content/Homework Generation Requirements and Evaluation Criteria

This (166 point) component of the course evaluation criteria consists of four parts:
  1. (50 points) the delivery of a two class, in-class presentation;
  2. (50 points) the generation of HTML language notes;
  3. (50 points) the production of a two-page language synopsis/summary paper or a language quick reference sheet; and
  4. (16 points) the development of a language homework specification.
Each of these four parts will be evaluated only on an A-F scale, mapped as follows:
For the parts each allocated 50 points, A-F will constitute 50, 38, 26, 14, and 0 points, respectively;
For the part allocated 16 points, A-F will constitute 16, 12, 8, 4, and 0 points, respectively.

Both the specific requirements and detailed evaluation criteria for each of these four parts is given below. However, in general, preparing presentations, papers, notes, and exercises in the style of the language chapters from Seven More Languages in Seven Weeks: Languages that are Shaping the Future is strongly advised. In other words, do not present elementary material, including tasks such as ``hello world,'' data types, defining functions, and so on. Rather focus on the key defining features of the language (e.g., pattern matching, message passing, coroutines, callbacks, concurrency, and so on). Remember, an objective of the entire presentation experience is to give your fellow classmates enough fodder to make use of in their final course projects; the instructor does not want only Python or Lua to be used for final projects.

Note: You will need to strip off the .txt filename extension on each template linked below before processing or submitting your project.

I. Two-class, In-class Language Presentation

EVALUATION CRITERIA: level of preparation, clarity, creativity, and originality.

II. HTML Language Notes

EVALUATION CRITERIA: clarity, creativity, originality, grammar, spelling, style/usage, cleanliness of the HTML code, adherence to provided template, adherence to the provided conventions/style guide, cited all references, and followed directions.

See the Scheme, ML, Haskell HTML notes for examples.

III. Two-page Language Synopsis/Summary or Language Cheat Sheet

Each student has the option of creating either a two-page language synopsis/summary document or a language quick reference sheet (i.e., quick reference guide). Both will be created using LaTeX.

EVALUATION CRITERIA: content, structure, quality of tables/figures, grammar, spelling, style/usage, clarity, creativity, originality, bibliography (BibTeX), cleanliness of the LaTeX code, adherence to provided ACM SIG LaTeX/BibTeX template, adherence to the provided conventions/style guide, cited all references, and followed directions.

Two-page Language Summary

Use the two-page language summary papers from ACM SIGPLAN Notices, 28(3), 1993, which contains a nice collection of short articles on several important programming languages (e.g., LISP, Smalltalk, PROLOG, or C), as a model for your paper (though you will use a different LaTeX template---see below).

Each paper must be two pages in length, must include one figure and one table, and must include a minimum of three references to published ACM or IEEE (or another major publishing house) papers.

Papers must be written using LaTeX and BibTeX.

Specifically, students must use the ACM SIG Proceedings LaTeX/BibTeX Templates specifically tailored for this course. While acmart-master.zip contains the LaTeX/BibTeX style files for multiple ACM journals and conferences, the instructor of this course has prepared a zip archive CPS452Fall2019ACMtemplate.zip specifically tailored for this part of this component of this course. It includes:

Filename Description
acmart.cls LaTeX style file.
ACM-Reference-Format.bst BibTeX style file.
Makefile Makefile to build composite PDF document.
sample-sigconf.tex Main LaTeX document file.
sample-sigconf.bib BibTeX bibliography database file.
sample-sigconf.pdf Final composite PDF document produced by Makefile; also serves as a guide for using this LaTeX style.

Use the LaTeX package lstlisting to typeset any code you include in your paper. Source code in the paper does not count toward the page count.

You may want to either an IDE for LaTeX. Two popular IDEs for LaTeX are Texmaker and Overleaf. Overleaf is a synchronized, split screen (source,PDF) collaborative LaTeX IDE.

For an example of a paper written using this ACM LaTeX/BibTeX template from the Spring 2017 offering of this course, see LaTeX & BibTeX source code, & composite, generated PDF.

Carefully follow both these recommendations/advice and this convention/style guide.

Each student must have his paper evaluated at the Write Place prior to submission.

Should you want to build your LaTeX document in a Linux environment, please find detailed instructions on installing Linux in a virtual machine on your system here (courtesy SEEDLabs).

If you are new to LaTeX/BibTeX, you are also strongly advised to see the instructor well in advance of your paper deadline for him to review your process and materials.

Language Cheat Sheet

Use the either the Elixir quick reference sheet or the C, Go, vi (source code), Linux, or Advanced Linux quick reference sheets (created by Jack Watkin) as a model for your quick reference sheet. Use this LaTeX template (again, created by Jack Watkin) or use an alternate template, once approved by the instructor.

IV. Homework Specification

The homework specification will be submitted in both HTML and LaTeX.

The homework specification must contain either two to three programming exercises akin to those assigned in Homeworks 1-5 or one larger programming, project-like exercise akin to [PLCI] Programming Project 5.14 on pp. 213-216.

EVALUATION CRITERIA: clarity, creativity, originality, grammar, spelling, style/usage, cleanliness of the HTML/LaTeX code, adherence to provided HTML template, adherence to provided LaTeX template, and followed directions. Samples: HTML & LaTeX.

How to Submit

Create a directory structure that mimics the following:
$ find arnoldz3-Factor/
arnoldz3-Factor
arnoldz3-Factor/paper
arnoldz3-Factor/paper/acmart.cls
arnoldz3-Factor/paper/index.html
arnoldz3-Factor/paper/figs
arnoldz3-Factor/paper/figs/stackpic.png
arnoldz3-Factor/paper/Makefile
arnoldz3-Factor/paper/arnoldz3-Factor.bib
arnoldz3-Factor/paper/arnoldz3-Factor.pdf
arnoldz3-Factor/paper/arnoldz3-Factor.tex
arnoldz3-Factor/paper/ACM-Reference-Format.bst
arnoldz3-Factor/notes
arnoldz3-Factor/notes/arnoldz3-Factor.html
arnoldz3-Factor/homework
arnoldz3-Factor/homework/arnoldz3-homework-Factor.tex
arnoldz3-Factor/homework/arnoldz3-homework-Factor.html
arnoldz3-Factor/homework/arnoldz3-homework-Factor.pdf
arnoldz3-Factor/src
arnoldz3-Factor/src/homework.factor
arnoldz3-Factor/src/my-quadratic.factor
arnoldz3-Factor/src/my-factorial.factor
arnoldz3-Factor/src/library.factor
arnoldz3-Factor/src/palindrome.factor
arnoldz3-Factor/src/palindrome-tests.factor
$ ls
arnoldz3-Factor/
$ ls arnoldz3-Factor/
homework/ notes/    paper/    src/
$ zip -r arnoldz3-Factor.zip arnoldz3-Factor/
$ ls 
arnoldz3-Factor/ arnoldz3-Factor.zip

where the outer directory is named with your UD e-mail id. That directory must contain only three sub-directories named homework, notes, and paper---which each contain the files for that part of the submission. Note that students must follow these file-naming conventions not only for the directories, but also for each individual file in the zip archive submission. In particular, the prefix for the files for both the notes and the paper/quick-reference-sheet must be the name of the language you studied (e.g., ML above). The prefix for the homework specification files must be the named of the language followed by the string homework (e.g., MLhomework.html and MLhomework.tex above).

Submit <YOUR UD E-MAIL ID>-<language>.zip through Isidore.

See arnoldz3-Factor.zip for an example submission. You must use both this exact directory structure and this exact file-naming scheme. However, you will need to update you will need to update the course number and name, and the semester and year--- this sample provided is from Spring 2017 when the course was titled `CPS 499-03: Emerging Languages.'

Note

To get an A on this project (all components---presentation, homeworks, notes, and paper/quick-reference-sheet), you must not only submit an awesome project, but also follow all of the convention/style and LaTeX/BibTeX guidelines completely. An amazing project that did not follow all of the guidelines posted here will top off at a B.

While graded (166 points), this component of the course can be thought off as practice for the final course project (333 points), which will use a similar construction and submission guidelines and procedure.

Deadlines

All parts, save for the paper/quick-reference-sheet draft, are due on the date you present in class---the first date of the two presentation dates.

Component Deadline
Presentation see below
Language notes see below
Paper/quick-reference-sheet draft one week prior to presentation date (see below)
Final paper/quick-reference-sheet see below
Homework specification see below

Schedule

Student Language Presentation
Benjamin Amato the miniKanren programming language October 21, 23, & 28
Jacob Schwartz the Kotlin programming language October 28 & 30
Thomas McKernan the Clojure programming language October 30 & November 4
Tyler Berkshire the F# programming language November 6 & 11
Ajay Patnaik the TypeScript programming language November 13
Ajay Patnaik the Swift programming language November 13
Corey Reichel the R programming language November 18 and 20
Jonathan Henry the Idris programming language November 25

TOC

Completed Programming Language Papers, Notes, and Exercises

are available in GitHub Pages.

TOC

Midterm Projects

Assigned: Oct 16
Due: Nov 13, 3:35pm

Total points: 167 points

Isidore | Style guide | Academic Integrity |Evaluation Criteria


(Note: asterisks superscripts indicate level of project difficulty; more asterisks=more difficult.)

TOC

Final Project, Paper, & Presentation Requirements and Evaluation Criteria

This (333 point) component of the course evaluation criteria consists of three parts:
  1. (111 points) the development of a working system;
  2. (111 points) the production of a two-page final project term paper; and
  3. (111 points) the delivery of an in-class presentation.
Each of these three parts will be evaluated only on an A-F scale, mapped as follows:
For the parts each allocated 111 points, A-F will constitute 111, 83, 55, 27, and 0 points, respectively;

Both the specific requirements and detailed evaluation criteria for each of these three parts is given below.

Note: You will need to strip off the .txt filename extension on each template linked below before processing or submitting your project.

I. Working System

EVALUATION CRITERIA: functionality, creativity, depth, and documentation.

II. Two-page Final Project Term Paper

EVALUATION CRITERIA: content, structure, quality of tables/figures, grammar, spelling, style/usage, clarity, creativity, originality, bibliography (BibTeX), cleanliness of the LaTeX code, adherence to provided ACM SIG LaTeX/BibTeX template, adherence to the provided conventions/style guide, cited all references, and followed directions.

Each paper must be two pages in length, must include one figure and one table, and must include a minimum of three references to published ACM or IEEE (or another major publishing house) papers.

Papers must be written using LaTeX and BibTeX.

Specifically, students must use the ACM SIG Proceedings LaTeX/BibTeX Templates specifically tailored for this course. While acmart-master.zip contains the LaTeX/BibTeX style files for multiple ACM journals and conferences, the instructor of this course has prepared a zip archive CPS452Fall2019ACMtemplate.zip specifically tailored for this part of this component of this course. It includes:

Filename Description
acmart.cls LaTeX style file.
ACM-Reference-Format.bst BibTeX style file.
Makefile Makefile to build composite PDF document.
sample-sigconf.tex Main LaTeX document file.
sample-sigconf.bib BibTeX bibliography database file.
sample-sigconf.pdf Final composite PDF document produced by Makefile; also serves as a guide for using this LaTeX style.

Use the LaTeX package lstlisting to typeset any code you include in your paper. Source code in the paper does not count toward the page count.

You may want to either an IDE for LaTeX. Two popular IDEs for LaTeX are Texmaker and Overleaf. Overleaf is a synchronized, split screen (source,PDF) collaborative LaTeX IDE.

For an example of a paper written using this ACM LaTeX/BibTeX template from the language presentations of the Spring 2017 offering of this course, see LaTeX & BibTeX source code, & composite, generated PDF.

Carefully follow both these recommendations/advice and this convention/style guide.

Each student must have his paper evaluated at the Write Place prior to submission.

Should you want to build your LaTeX document in a Linux environment, please find detailed instructions on installing Linux in a virtual machine on your system here (courtesy SEEDLabs).

If you are new to LaTeX/BibTeX, you are also strongly advised to see the instructor well in advance of your paper deadline for him to review your process and materials.

III. In-class Presentation

EVALUATION CRITERIA: level of preparation, clarity, creativity, and originality.

How to Submit

Create a directory structure that mimics the following:
$ find arnoldz3-Final/
arnoldz3-Final
arnoldz3-Final/html
arnoldz3-Final/html/index.html
arnoldz3-Final/paper
arnoldz3-Final/paper/ACM-Reference-Format.bst
arnoldz3-Final/paper/acmart.cls
arnoldz3-Final/paper/arnoldz3-paper.bib
arnoldz3-Final/paper/arnoldz3-paper.pdf
arnoldz3-Final/paper/arnoldz3-paper.tex
arnoldz3-Final/paper/index.html
arnoldz3-Final/paper/stackpic.png
arnoldz3-Final/presentation/
arnoldz3-Final/presentation/arnoldz3-presentation.pdf
arnoldz3-Final/presentation/arnoldz3-presentation.ppt
arnoldz3-Final/src
arnoldz3-Final/src/README
arnoldz3-Final/src/homework.factor
arnoldz3-Final/src/library.factor
arnoldz3-Final/src/my-factorial.factor
arnoldz3-Final/src/my-quadratic.factor
arnoldz3-Final/src/palindrome-tests.factor
arnoldz3-Final/src/palindrome.factor
$ ls
arnoldz3-Final/
$ ls arnoldz3-Final/
html/ paper/ presentation/    src/
$ zip -r arnoldz3-Final.zip arnoldz3-Final/
$ ls 
arnoldz3-Final/ arnoldz3-Final.zip

where the outer directory is named with your UD e-mail id. That directory must contain only four sub-directories named paper, presentation, and src---which each contain the files for that part of the submission. Note that students must follow these file-naming conventions not only for the directories, but also for each individual file in the zip archive submission.

Note: the file src/README must detail the language, compiler or interpreter (version and download link), and testing platform (Linux, MacOS, Windows); also the file html/index.html must mimic the file available here.

Submit <YOUR UD E-MAIL ID>-<Final>.zip through Isidore.

Note

To get an A on this project (all components---system, paper, and presentation), you must not only submit an awesome project, but also follow all of the convention/style and LaTeX/BibTeX guidelines completely. An amazing project that did not follow all of the guidelines posted here will top off at a B.

Deadlines

All parts are due on Dec 9, 2017 at noon.

Component Deadline
Abstract (200 words) November 21
Paper draft December 3
Working system December 9
Final paper December 9
Presentation December 9

Evaluation Rubric

Component Deadline Points
Abstract: November 21 11
Paper draft: December 9 20
Final presentation: December 9 111
Final paper: December 11 80
Source code/running system: December 11 111
Total: 333

Detailed Paper Evaluation

Component Points
Content: 20
Structure: 10
Clarity: 10
Grammar: 10
Cleanly working LaTeX code: 5
Adherence to ACM SIG style (citations, etc): 5
Tables/Figures: 15
Bibliography (BibTeX): 5
Total: 80

Detailed Presentation Evaluation

Component Points
Slides: 37
Clarity: 37
Creativity: 37
Total: 111

Detailed System Evaluation

Component Points
Functionality: 50
Creativity: 20
Depth: 21
Documentation: 20
Total: 111

TOC

Completed Final Projects, Papers, & Presentations

are available in GitHub Pages.

TOC

Evaluation Criteria

(all figures below are approximate, and subject to change within the first few weeks of the course)
Component Quantity Points per Total points
Homeworks & Pop Quizzes ~10 varies 220 (+ 115 EC)
Exam (Oct 2) 1 181 181
Language Presentation & Paper/Content/Homework Generation 1 166 166
Midterm Project 1 100 100
Final Project, Paper, & Presentation 1 333 333
Total:1,000

Homeworks involve analytical and programming exercises. The programming involved requires a fair amount of critical thought and design, and approximately 100-500 lines of code. The majority of the assignments involve novel programming problems which explore the use of alternative language concepts in application areas such as numerical methods, artificial intelligence, and web interaction management. Some assignments also involve reading and critical analysis of articles in the current programming languages literature. Handwritten assignments are not accepted. Assignments are due at 3:35pm in class. Late assignments are not accepted. No exceptions. Examinations I and II as well as the final examination are in-class, closed-book, and closed-notes. Examination III is a take-home. Attendance is mandatory at all examinations; make-ups will not be given. Any missed examination will result in a zero. Make no assumptions about anything; always consult the instructor first. Final letter grades of A, A-, B+, B, B-, C+, C, C-, and D start approximately at 93, 90, 87, 83, 80, 77, 73, 70, and 60 percent, respectively.

TOC

Workload

CPS 452 is a challenging course and moves at a very fast pace. Spending a minimum of six hours outside of class each week reading, studying, and programming is required. I advise you to see me to discuss any problems you may have before you are evaluated. Mastering the understanding and use of fundamental language concepts and alternative language features does not come easy, but does come with high reward. Programming languages are constantly evolving to meet the demands of the modern software development process and abilities of programmers and, as a result, widely used languages such as Ruby and Python, and even C++, now include support for many of the functional and dynamic languages features covered in this course.

TOC

Classroom & Course Policies

Students are expected to conduct themselves with respect, integrity, and virtue. Keep phones and similar devices in a silent mode and put away during class (i.e., out of sight). The use of laptop computers and similar devices is not permitted in class. Audio or video recording of any kind in class is strictly prohibited.

TOC

Academic Integrity

To achieve the course objectives, assignments must be a sole result of your individual work and must not be shared with classmates and must prepared in accordance with the University Honor Pledge (see below). Moreover, you may not plagiarize code from any textbooks, online resources, or other authors. Discussions among classmates must never include pending assignments. All questions and comments about a pending assignment must only be directed to the instructor and teaching assistants. Evidence indicating a violation of this policy will be handled according to the University Academic Honor Code and result in a doubly-weighted zero which will not be dropped (e.g., if the assignment is worth 100 points, you receive a 0/200). Make no assumptions about this policy; always consult the instructor first. No student should ever feel that they must resort to academic dishonesty. You are encouraged to consult the instructor if you are struggling with the course or an assignment. No grade is worth your integrity. Honesty in your academic work will develop into professional integrity. The faculty and students of the University of Dayton will not tolerate any form of academic dishonesty.

The Honor Pledge as listed in the Academic Honor Code section of the Undergraduate Issue of the Bulletin applies in full to this course. Graduate students and students enrolled in CPS 592 are governed by the Academic Dishonesty section of the Graduate Bulletin.

Honor code FAQ

TOC

Other Helpful ...

Programming style guide

Programming languages resources

Practice problems

Grades:
available in Isidore

Computer accounts:
UDit | A beginner's guide to effective e-mail

Helpful links:
academic calendar (PDF) | student handbook | UDit FERPA policies

Feedback:
Dr. Perugini welcomes any feedback you may have on the course motif and approach, the concepts presented in class, the course webpage, homeworks, projects, presentations, deadlines, course and grading policies, or your general experience in the course.

TOC

Last modified:
ad majorem Dei gloriam