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

H. Conrad Cunningham

17 August 2018

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 use the Exploring Languages with Interpreters (ELI) approach and use Haskell and other programming languages.

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 paradigms and language design and implementation. 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, test, and document) 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 2018 Section Details

Time and Place

9:00 - 9:50 a.m. Monday-Wednesday-Friday; Lamar Hall 326

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 side)
Office hours: 8:00-11:00 a.m. & 2:00-4:00 p.m. TuTh

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 contact him 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 draft textbook 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 semester class will primarily use the Haskell 2010 programming language. For some purposes, the class may use Java 9, Python 3.7, Lua 5.3, or other languages.

Primary textbook:

Haskell reference books:

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. History of programming languages
  3. Programming paradigms
  4. Basic Haskell functional programming (statically typed, purely functional, lazily evaluated language)
  5. Modules and data abstraction
  6. Evaluation and efficiency
  7. List programming
  8. Higher-order functions
  9. Algebraic data types
  10. Language processing pipeline
  11. Fundamental aspects of language design and processing.
  12. ELI Calculator language design and implementation (arithmetic expressions with variables)
  13. ELI Imperative Core language design and implementation (global variables, global functions, assignments, control constructs)
  14. (TBD) ELI Scheme language design and implementation (list values, local variable blocks, first-class functions)
  15. (TBD) ELI Typed Imperative Core language design and implementation (type checking)
  16. (TBD) Other programming languages (e.g. Lua)

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.

The course is scheduled in a classroom with an attendance scanner. The scanner has been activated. The instructor will use the attendance logs to file all required attendance reports.

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

Disability Access and Inclusion

The University of Mississippi is committed to the creation of inclusive learning environments for all students. If there are aspects of the instruction or design of this course that result in barriers to your full inclusion and participation, or to accurate assessment of your achievement, please contact the course instructor as soon as possible. Barriers may include, but are not necessarily limited to, timed exams and in-class assignments, difficulty with the acquisition of lecture content, inaccessible web content, and the use of non-captioned or non-transcribed video and audio files.

If you are approved through Student Disability Services (SDS), you must log in to your Rebel Access portal at https://sds.olemiss.edu to request approved accommodations. If you are NOT approved through SDS, you must contact Student Disability Services at 662-915-7128 so the office can:

  1. determine your eligibility for accommodations,
  2. disseminate to your instructors a Faculty Notification Letter,
  3. facilitate the removal of barriers, and
  4. ensure you have equal access to the same opportunities for success that are available to all students.

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.