21 August 2017
2017-09-07: TA Office Hours modified
2017-10-10: Clarifications added to Assignments section
CSci 450/503 studies the basic concepts of programming language design and implementation, with a focus on alternative programming paradigms.
This semester we will primarily use the Haskell functional programming language and the Exploring Languages using Interpreters (ELI) approach.
CSci 450: Organization of Programming Languages: History and concepts of programming languages; run-time behavior; formal aspects; language definition; data types and structures; control; and data flow, compilation and interpretation.
CSci 503: Fundamental Concepts in Languages: An intensive study of the fundamental concepts of programming languages and the associated software system structures. Computer science graduate students only.
CSci 450: CSci 211 and 223 with minimum grades of C-
CSci 503: Computer Science graduate students only
CSci 450, Organization of Programming Languages, is a core undergraduate course required for BSCS and BA in computer science students. It can also be taken to satisfy the requirements of an undergraduate minor in computer science.
CSci 503, Fundamental Concepts in Languages, is a transition course designed for students with undergraduate degrees in related fields who wish to study computer science at the graduate level but who need to strengthen their backgrounds in programming language paradigms and organization. Enrollment is limited to computer science graduate students who have been admitted in conditional, qualifying, or nondegree standing. Credit for this course cannot be applied to MS or PhD degrees in computer science except to satisfy prerequisite requirements.
Graduate students in other fields should not enroll in this class. (We do not currently have the capacity to handle additional students.)
The primary goal of this course is to broaden and deepen the students’ knowledge and experience with programming languages. Students explore alternative programming paradigms and languages, investigate language implementation techniques, and compare and contrast language designs.
Upon successful completion of the course, students will be able to:
describe the fundamental concepts of programming languages and the principal programming paradigms
recognize syntactically and semantically correct programs written in the selected subsets of example languages
develop (i.e., design, implement, execute, and test) syntactically and semantically correct programs written in the selected subsets of example languages
design and implement selected programming language features
relate the fundamental concepts of programming languages and programming paradigms to their previous programming language knowledge and experiences
be more confident as computer programmers using a variety of programming paradigms and languages
appreciate the elegance and usefulness of alternative programming paradigms (such as functional programming)
study and learn fundamental concepts of programming paradigms and languages with which they previously had little knowledge
9:00 - 9:50 a.m. Monday-Wednesday-Friday; Holman Hall 39
Dr. H. Conrad Cunningham, Professor, Computer and Information Science
Office: 211 Weir Hall
Telephone: (662) 915-5358
Email: hcc@cs.olemiss.edu
Web: Professor Cunningham’s Homepage (http://www.cs.olemiss.edu/~hcc)
Office hours: 10:15 - 11:30 a.m. MWF (or by arrangement)
Mr. Kyle Moore, kamoore3@go.olemiss.edu
Office: 210 Weir Hall (left corner)
Office hours: 9:00-11:30 TuTh, 2:00-4:00 MWF
Students may contact the instructor by telephone or email or meet him during his office hours. He will attempt to respond to email and telephone messages within 24 hours during the work week. Emails or telephone calls arriving outside the 8:00 a.m. to 5:00 p.m., Monday-Friday workday may be deferred until the next workday.
Students may also meet with the Teaching Assistant during his office hours or by email.
The instructor and teaching assistant will use the features of the Blackboard Learn system (announcements and email) to communicate urgent information to students outside of class.
The instructional methods used in this course include readings from the instructor’s lecture notes and other course materials, classroom lectures and discussions, assignments (programming projects, written exercises, and quizzes), and in-class exams.
The instructor will maintain a CSci 450/503 course website at http://www.cs.olemiss.edu/~hcc/csci450/csci450.html. Most course materials will be linked to the Lecture Notes page. Restricted access materials will be posted to the course’s Blackboard site.
The Fall senester class will primarily use the Haskell programming language. If time allows, we will also use Lua and other languages.
Required textbook: None
Functional programming using Haskell:
H. Conrad Cunningham. Introduction to Functional Programming Using Haskell, under (re)development beginning in June 2016. This material can be accessed via its Lecture Notes page.
Miron Lipovaca. Learn You a Haskell for Great Good: A Beginner’s Guide, a free online tutorial at http://learnyouahaskell.com/. (It is also in print from No Starch Press, 2011).
Haskell, Wikibooks.
Multiparadigm programming using Lua (tentative):
H. Conrad Cunningham. Lua Language and Programming, Fall 2016. This is a set of the instructor’s slides based on Programming in Lua, Slides for Course, developed by Fabio Mascarenhas, Federal University of Rio de Janeiro, Brazil, July 2013.
Roberto Ierusalimshcy. Programming in Lua, Fourth Edition, Lua.org, Rio de Janiero, August 2016. This book is called PiL. It covers Lua 5.3 and is substantially reorganized from the third edition. The third edition PiL, which covers Lua 5.2, is probably adequate for this class. The first edition of Pil, which covers Lua 5.0, is available free online at https://www.lua.org/pil/contents.html.
The course does not require any special hardware. Students may use the Department’s Adler lab facilities, servers, or their own desktop or laptop systems to complete the programming assignments.
To complete the course, students need the following software available on the computer at which they will do their work:
Glasgow Haskell Compiler (GHC), the primary implementation of the Haskell 2010 language. The current version is 8.0+.
In most cases, it is best to install the Haskell Platform, a software bundle that includes GHC and other popular tools and libraries. Linux, Apple Mac OS X, and Microsoft Windows installers for GHC and the Haskell Platform are available on the Haskell website and various package repositories (e.g., Homebrew for OS X).
Note: On his Mac systems, your instructor has installed GHC, Cabal, and Stack separately using the Homebrew package manager instead of using the Haskell Platform distribution.
Text editor(s) or development environment(s) for editing Haskell, Lua, and other languages we may use
There is an Eclipse plug-in for Haskell.
A browser with plug-ins compatible with Blackboard
Students can run the Blackboard Browser Check to verify the configuration of the browser for normal use of Blackboard.
A browser that supports MathML to display the HTML version of the instructor’s course notes
The current version of Mozilla Firefox should work appropriately for both MathML and Blackboard.
Contact the instructor or teaching assistant concerning any issues related to installation and use of the language software or if access is needed to Department of Computer and Information Science computing facilities.
This is an experimental version of the course. The instructor will refine this list of topics as the semester progresses.
The instructor expects each student to attend class and participate during each scheduled class period and to complete the required out-of-class assignments by the stated deadlines.
All students are expected to study the relevant portions of the textbooks and and other course materials in conjunction with our class discussions (i.e., before coming to class). Explicit reading assignments will not always be given. If in doubt on what you need to read, please ask the instructor.
Each student is expected to complete all required assignments.
Several programming assignments will be assigned during the semester. We will primarily use the Haskell language, but we may use other languages (such as Java 8+ or Lua 5.1+) for some assignments. There may also be written assignments or short quizzes. (The instructor anticipates approximately five major assignments, but may add smaller assignments to replace or augment the major assignments as appropriate.)
Unless otherwise stated in the assignment description, an assignment is to be carried out by each individual student without inappropriate collaboration with others. See the section on Professional Conduct (10 Oct. correction: Academic Integrity).
Most (but possibly not all) assignments will be submitted electronically using the Blackboard system.
In preparing and submitting homework assignments make sure that:
your name, the course number or name, the assignment identifier, and individual exercises are clearly indicated in the content of the file or on the paper. (If it is a group assignment, give the group identifier and the names of all members.)
for any handwritten portions, you write legibly on only one side of the paper in a black or blue pen or dark pencil. Do NOT use red or green ink!
for any assignments submitted on paper, your pages are stapled together in the upper left corner when viewed from the front.
(Added 10 Oct.) if you reference outside textbooks, reference books, articles, websites, etc., or discuss an assignment with individuals inside or outside the class, you must document these by including appropriate citations or acknowledgements in your submitted work (e.g., a comment in the header of the primary source file of a program).
All students are expected to complete their homework assignments by their due dates. If an assignment is submitted late, a penalty of 10 percent of that assignment’s grade will be assessed for each class day it is late. A homework paper will not be accepted after graded papers have been returned, after a solution has been distributed, or after the final examination.
If an assignment is marked “optional”, it can replace an earlier assignment. However, all students are encouraged to work on these assignments; these optional activities can help the student master the concepts and skills and prepare for the proctored exams.
Students in CSci 503 are required to complete assignments or components of assignments that are optional for CSci 450 students.
There will be four examinations – three mid-term exams and a final exam.
The lowest grade of the four will be dropped and each of the other three grades will contribute 20 percent toward the course grade.
The mid-term examinations will be given in mid-September, mid-October, and mid-November. The final examination will be given during the final examination period published by the Registar’s office (Wednesday, 7 December, 8:00 a.m.).
Please do not ask to take the final examination earlier than the time set for the entire class.
Each exam will cover all topics studied to that point. The final exam is comprehensive over all material covered during the semester.
Each exam may consist of a combination of in-class and take-home components.
If you cannot take an examination at the scheduled time because of an illness or other special circumstances, please notify the instructor in advance. Without advance notification, it may not be possible to give a make-up examination.
The instructor may suggest various optional resources and activities. These activities are not graded, but they can help a student broaden and deepen his or her understanding of the programming language concepts.
We will attempt to grade submitted assignments within approximately one week.
60% of the final grade comes from the grades on the examinations. The remaining 40% comes from grades on the assignments (programming project, written exercises, and quizzes).
The ranges for the letter grades are 90-100% for A, 80-89% for B, 70-79% for C, 60-69% for D, and below 60% for F.
+/- grades will be used near the boundaries at the discretion of the instructor. The actual assignment of +/- grades depends upon the overall distribution of grades for the class.
University policy provides for reasonable accommodations to be made for students with verified disabilities on an individualized and flexible basis as specified under Section 504 of the Rehabilitation Act of 1973 and the Americans with Disabilities Act of 1990 (ADA).
Students with disabilities who believe they may benefit from classroom or other accommodations should contact the Office of Student Disability Services for information at 234 Martindale, 662-915-7128 (Phone), 662-915-7907 (TTY Phone), or sds@olemiss.edu (Email).
Any student requesting accommodation under this policy should present the instructor with the required documentation early in the semester and make arrangements in advance for each examination or assignment.
Materials used in connection with this course may be subject to copyright protection under Title 17 of the United States Code. Under certain Fair Use circumstances specified by law, copies may be made for private study, scholarship, or research.
Students should not share electronic copies of copyrighted materials with unauthorized users. Violations of copyright laws could subject individuals to federal and state civil penalties and criminal liability as well as disciplinary action under University policies.
The Information Technology (IT) Appropriate Use Policy sets forth the privileges of and restrictions on students, faculty, staff, and other users with respect to the computing and telecommunications systems offered by the University of Mississippi (UM). This policy is designed to protect the University community from illegal or damaging actions by individuals, either knowingly or unknowingly. Inappropriate use exposes the University to risks, including virus attacks, compromise of network systems and services, and legal issues. This policy directly addresses copyright issues related to illegal downloads and peer-to-peer file sharing.
For questions about the Appropriate Use Policy, send an email to aup@olemiss.edu.
The University of Mississippi is dedicated to supporting and sustaining a safe and scholarly community of learning dedicated to nurturing excellence inside and outside of the classroom. Each student has a duty to become familiar with University values and standards reflected in University policies, and each student has a duty to honor University values and standards reflected in University policies. These policies are outlined in the M Book. For a complete listing of policies, please visit the University Policy Directory.
As a student in CSci 450/503, you are expected to conduct yourself in a professional and ethical manner according to the policies, procedures, and expectations of the Department of Computer and Information Science, School of Engineering, Graduate School, University of Mississippi, and discipline of computer science.
The University’s academic discipline procedure will be followed in this course. Violations of academic integrity may result in anything from failure on an assignment to expulsion from the course, depending on the severity of the violation.
The University must abide by Federal guidelines to verify the participation of students. For all course types, including thesis, internships, labs, online courses, etc., the instructor must verify your participation based on some type of participation. In this course, the instructor will verify the physical attendance of each student and report it during the first two weeks and otherwise as required.
The University of Mississippi protects the privacy of all students, including online and distance learning students, through adherence to the Family Educational Rights and Privacy Act of 1974 (FERPA) through compliance with other institutional policies and procedures governing the management and security of protected information of faculty, staff, and students, and by outlining the expectations of privacy for the university community as regards to electronic information. See the Student Information and Privacy Policy for more information.