ad majorem Dei gloriam

CPS 499: Emerging/Multi-paradigm Languages

Dynamic Bindings for Engineering Software

Department of Computer Science, University of Dayton

Spring 2017

Table of Contents (TOC)

Course Description

Special Topics in Emerging/Multi-paradigm 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 LISP, Ruby, Erlang, Elixir, Clojure, Haskell, 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 F 11:15am-12:05pm, SC 224.
Instructor:
Dr. Saverio Perugini, e-mail id: sperugini1, tel: 229-4079, office: AN 145
OHs: M W 6:20pm-7:20pm; T 2:15pm-3:15pm; F 10:00am-11:00am (only when class is in session); & by appointment.
Teaching assistant:
Benjamin Thompson (e-mail id: thompsonb4), AN 131
OHs: T 2:00pm-5:00pm; Th 4:30pm-8:30pm (only when class is in session); & by appointment.

TOC

Required Books

    [PLCI] Programming Languages: Concepts and Implementation by S. Perugini. 2017. 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

CPS 499: Emerging/Multi-paradigm Languages/Spring 2017

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 languages course & Introduction to programming languages (programming language concepts, nomenclature, and paradigms; [PLCI] Ch 1): Jan 18 20

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

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

  2. LISP ([PLCI] Ch 5; fundamentals of functional programming)
    1. λ-calculus & S-expressions [A Brief Introduction to Lisp, installing & using Racket, functional programming resources, The Scheme Programming Language]: Jan 23
    2. Building data structures, such as binary trees, with lists: Jan 25
    3. let, let*, & letrec: Jan 27 Feb 1: Jan 25 27 30
    4. Closures & closures ([PLCI] Ch 11) [about closures]: Jan 30 Feb 1 6 8
    5. Binding & scope [PLCI] Ch 6): Feb 1 6 10
    6. Closure data representation strategy ([PLCI] Ch 9): Feb 6 8 10
    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): Feb 10 13 17 20 22
      2. first-class continuations & call/cc [about continuations] ([TSPL] § 3.3, [TSS] Ch13): Feb 15 17 20 22
    8. Homoinconicity [The Roots of LISP]: Feb 3 6

  3. HASKELL & ML & IDRIS ([PLCI] Ch 7-9 & Appendices C-B; types and type systems)
    1. Introduction to Haskell ([PLCI] Appendix C) [installing & using GHC]: February 24 27

    2. Introduction to ML ([PLCI] Appendix B) [installing & using SML-NJ]: February 24 27

    3. Strong Typing & Type Inference ([PLCI] Ch 7): Feb 24 27

    4. Currying & Higher-order Functions ([PLCI] Ch 8): Feb 27 Mar 1 6

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

    6. 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

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

  4. ERLANG, ELIXIR, & GO (Communication and Concurrency)
    1. The Actor Model of Concurrency ([SCMSW] Ch 5)
      1. Elixir ([SMLSW] Ch 4; elixir-lang.org): Mar 20 22
    2. Communicating Sequential Processes (CSP) ([SCMSW] Ch6)
      1. Go ([PG] Ch7) (Go by example, a tour of Go, command-line programming with Go, effective Go): self-study

  5. FACTOR (factorcode.org): Mar 24 27

  6. LUA (lua.org): Mar 29 31

  7. JULIA (julialang.org): Apr 3 7

  8. Io (iolanguage.org): Apr 10 12

  9. CLIPS (clipsrules.sourceforge.net): Apr 19 21

  10. PROLOG & miniKanren ([PLCI] Ch 14; declarative/logic programming): Apr 19 21
    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

  11. ELM (elm-lang.org): Apr 24 26

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

  13. CONCLUSION
    1. course reflection (terms & themes; ACM A.M. Turing award winners with contributions related to languages): Apr 28
    2. Final project presentations: May 3

  14. Final Exam (comprehensive, closed book, closed notes) [practice problems]: W May 3, 12:20pm-2:10pm, SC 224

TOC

Homeworks

Homework Assigned Due Total points
Homework #1 Jan 18 Jan 20/25 40
Homework #2 Jan 25 Feb 3 55
Homework #3 Feb 3 Feb 10 40
Homework #4 Feb 10 Feb 20 70
Homework #5 Feb 20 Mar 17 129
Total Homework Points: 334

TOC

Homework #1

Assigned: January 18
Due: (problem 1) January 20 & (problem 2) 25, 11:15am

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.3.14 (you will need to do Programming Exercise 3.3.13 first).

TOC

Homework #2

Assigned: January 25
Due: February 3, 11:15am

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.2)
  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) See handout given in class.

TOC

Homework #3

Assigned: February 3
Due: February 10, 11:15am

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.10.1.

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

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

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

TOC

Homework #4

Assigned: February 10
Due: February 20, 11:15am

Total points: 70 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.12.

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

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

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

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

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

  8. (5 points extra credit) [PLCI] Programming Exercise 13.8.7.

  9. (10 points) [PLCI] Programming Exercise 13.8.13.

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

TOC

Homework #5

Assigned: February 20
Due: March 17, 11:15am

Total points: 129 points

Isidore | Style guide | Academic Integrity | Evaluation Criteria


  1. (15 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.18.

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

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

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

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

  9. (20 points) [PLCI] Programming Exercise 12.7.11.

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

  11. (14 points) [PLCI] Conceptual Exercise 17.6.2.

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 cheat 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 cheat 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.zip contains the LaTeX/BibTeX style files for multiple ACM journals and conferences, the instructor of this course has prepared a zip archive CPS499S17ACMtemplate.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 cheat sheet or the C, Go, vi (source code), Linux, or Advanced Linux cheat sheets (created by Jack Watkin) as a model for your cheat 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/homework
arnoldz3-Factor/homework/Factorhomework.html
arnoldz3-Factor/homework/Factorhomework.pdf
arnoldz3-Factor/homework/Factorhomework.tex
arnoldz3-Factor/notes
arnoldz3-Factor/notes/Factor.html
arnoldz3-Factor/paper
arnoldz3-Factor/paper/ACM-Reference-Format.bst
arnoldz3-Factor/paper/acmart.cls
arnoldz3-Factor/paper/arnoldz3-Factor.bib
arnoldz3-Factor/paper/arnoldz3-Factor.pdf
arnoldz3-Factor/paper/arnoldz3-Factor.tex
arnoldz3-Factor/paper/index.html
arnoldz3-Factor/paper/stackpic.png
arnoldz3-Factor/src
arnoldz3-Factor/src/homework.factor
arnoldz3-Factor/src/library.factor
arnoldz3-Factor/src/my-factorial.factor
arnoldz3-Factor/src/my-quadratic.factor
arnoldz3-Factor/src/palindrome-tests.factor
arnoldz3-Factor/src/palindrome.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/cheat-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.

Note

To get an A on this project (all components---presentation, homeworks, notes, and paper/cheat-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/cheat-sheet draft, are due on the (randomly assigned, but tradable) date you present in class---the first date of the two presentation dates.

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

Schedule

Student Language Presentation
Tyler Masthay the Elixir programming language March 20 & 22
Zachary Arnold the Factor programming language March 24 & 27
Luc Talatinian the Lua programming language March 29 & 31
Alexander Lauber Julia programming language April 3 & April 7
Nicolaas Scheltens the Io programming language April 10 & April 12
Jack Watkin the CLIPS & PROLOG programming languages April 19 & April 21
Benjamin Stechschulte the Elm programming language April 24 & April 26

TOC

Completed Programming Language Papers, Notes, and Exercises

Student Language Presentation Video Paper Notes Exercises
Luc Talatinian the Lua programming language YouTube | Warpwire PDF HTML HTML
Alexander Lauber the Julia programming language YouTube | Warpwire unavailable HTML HTML
Jack Watkin the CLIPS programming language YouTube | Warpwire PDF HTML HTML
Jack Watkin the PROLOG programming language YouTube | Warpwire PDF HTML HTML
Benjamin Stechschulte the Elm programming language YouTube | Warpwire unavailable unavailable unavailable
Tyler Masthay the Elixir programming language unavailable PDF HTML HTML
Zachary Arnold the Factor programming language YouTube | Warpwire PDF HTML HTML
Nicolaas Scheltens the Io programming language YouTube | Warpwire unavailable HTML HTML

TOC

Midterm Projects

Assigned: March 10
Due: March 27, 11:15am

Total points: 167 points

Isidore | Style guide | Academic Integrity |Evaluation Criteria


(Note: astericks superscripts indicate level of project difficulty; more astericks=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.zip contains the LaTeX/BibTeX style files for multiple ACM journals and conferences, the instructor of this course has prepared a zip archive CPS499S17ACMtemplate.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.

See arnoldz3-Final.zip for an example submission. You must use both this exact directory structure and this exact file-naming scheme.

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 May 3, 2017 at 12:20pm.

Component Deadline
Abstract (200 words) April 3
Working system May 3
Paper draft April 26
Final paper May 3
Presentation May 3

TOC

Completed Final Projects, Papers, & Presentations

Video recordings of all final projects presentations are available in two parts: part i (YouTube | Warpwire) & part ii (YouTube | Warpwire).

Student Project Title Language Used Paper Presentation Video Presentation Slides Source Code
Luc Talatinian A LOVE2D Image Editor the Lua programming language PDF YouTube | Warpwire PDF
Alexander Lauber Image Processing in Julia the Julia programming language unavailable YouTube | Warpwire N/A
Jack Watkin ChAmElEoN Interpreter Implementation in Python the Python programming language PDF YouTube | Warpwire PDF
Tyler Masthay Parareal Algorithm Implementation and Simulation in Julia the Julia programming language PDF YouTube | Warpwire TXT bitbucket
Zachary Arnold A Zero-sum Game in Lua the Lua programming language PDF YouTube | Warpwire PDF
Nicolaas Scheltens Thirty-One Card Game in Lua the Lua programming language unavailable YouTube | Warpwire N/A

TOC

Evaluation Criteria

(point values below are approximate):

Component Quantity Points per Total points
Homeworks & pop quizzes ~10 varies 334
Language presentation & paper/content/homework generation 1 166 166
Midterm project 1 167 167
Final project, paper, & presentation 1 333 333
Total:1,000

(Note: This is a relatively new course and this is only the second time it has been offered; thus, the course and the evaluation components and percentages above are approximate (i.e., they are emerging) and will evolve organically as we progress through the course and I have a more accurate understanding of the interests and aptitude of the students.)
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 5:05pm 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 499/592 is a challenging course and moves at a very fast pace. Spending a minimum of 9 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

Course Policies

Students are expected to conduct themselves with professionalism and integrity. Keep cell phones and similar devices in a silent mode during class. The use of laptop computers and similar devices is not permitted in class.

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 (PDF) | 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