CSci 450-01: Org. of Programming Languages
CSci 503-01: Fund. Concepts in Languages
Syllabus, Fall 2017

H. Conrad Cunningham

21 August 2017

2017-09-07: TA Office Hours modified
2017-10-10: Clarifications added to Assignments section

Course Overview

Introduction

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.

Catalog Descriptions

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.

Prerequisites

CSci 450: CSci 211 and 223 with minimum grades of C-
CSci 503: Computer Science graduate students only

Position in Curricula

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

Course Goal

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.

Course Student Outcomes

Upon successful completion of the course, students will be able to:

  1. describe the fundamental concepts of programming languages and the principal programming paradigms

  2. recognize syntactically and semantically correct programs written in the selected subsets of example languages

  3. develop (i.e., design, implement, execute, and test) syntactically and semantically correct programs written in the selected subsets of example languages

  4. design and implement selected programming language features

  5. relate the fundamental concepts of programming languages and programming paradigms to their previous programming language knowledge and experiences

  6. be more confident as computer programmers using a variety of programming paradigms and languages

  7. appreciate the elegance and usefulness of alternative programming paradigms (such as functional programming)

  8. study and learn fundamental concepts of programming paradigms and languages with which they previously had little knowledge

Fall 2017 Section Details

Time and Place

9:00 - 9:50 a.m. Monday-Wednesday-Friday; Holman Hall 39

Instructor

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)

Teaching Assistant

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

Communication Policy

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.

Methods of Instruction

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.

Course Materials

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:

Multiparadigm programming using Lua (tentative):

Hardware

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.

Software

To complete the course, students need the following software available on the computer at which they will do their work:

Technical Support

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.

Course Topics

This is an experimental version of the course. The instructor will refine this list of topics as the semester progresses.

  1. Introduction
  2. Programming paradigms
  3. History of programming languages
  4. Phases of language processing
  5. Basic Haskell functional programming (statically typed, purely functional, lazily evaluated language)
  6. Evaluation and efficiency
  7. List programming
  8. Higher order functions
  9. Algebraic data types
  10. ELI Expression Language design and implementation (arithmetic expressions with variables)
  11. ELI Imperative Core language design and implementation (global variables, global functions, assignments, control constructs)
  12. (TBD) ELI Scheme language design and implementation (list values, local variable blocks, first-class functions)
  13. (TBD) ELI Typed Imperative Core language design and implementation (type checking)
  14. (TBD) Lua (minimalist, extensible dynamic imperative language)

Course Expectations and Attendance Policy

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.

Assignments

Examinations

Optional Activities

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.

Grading

University of Mississippi Policies

Students with Disabilities

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.

Copyrighted Materials

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.

Appropriate Use of Information Technology

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.

Academic Integrity

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.

Verification of Student Attendance

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.

Student Privacy Policy

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.