\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[]{article}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provides euro and other symbols
\else % if luatex or xelatex
  \usepackage{unicode-math}
  \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
\fi
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
% use microtype if available
\IfFileExists{microtype.sty}{%
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
}
\usepackage{hyperref}
\hypersetup{
            pdftitle={CSci 658-01: Software Language Engineering Spring 2018 Syllabus},
            pdfauthor={H. Conrad Cunningham},
            pdfborder={0 0 0},
            breaklinks=true}
\urlstyle{same}  % don't use monospace font for urls
\usepackage{longtable,booktabs}
% Fix footnotes in tables (requires footnote package)
\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{longtable}}{}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{0}
% Redefines (sub)paragraphs to behave more like sections
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi

% set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother

\usepackage{caption}
\DeclareCaptionLabelFormat{nolabel}{}
\captionsetup{labelformat=nolabel}

\title{CSci 658-01: Software Language Engineering\\
Spring 2018 Syllabus}
\author{\textbf{H. Conrad Cunningham}}
\date{\textbf{22 January 2018 (revised 13 April 2018)}}

\begin{document}
\maketitle

Copyright (C) 2018, \href{http://www.cs.olemiss.edu/~hcc}{H. Conrad
Cunningham}\\
Professor of \href{https://www.cs.olemiss.edu/}{Computer and Information
Science}\\
\href{http://www,olemiss.edu}{University of Mississippi}\\
211 Weir Hall\\
P.O. Box 1848\\
University, MS 38677\\
(662) 915-5358

\hypertarget{course-overview}{%
\section{Course Overview}\label{course-overview}}

\hypertarget{introduction}{%
\subsection{Introduction}\label{introduction}}

In this course, we study the design, implementation, and use of both
external and internal (or embedded) domain-specific languages (DSLs).

A DSL is a simple language normally with a syntax and semantics focused
on a specific application area, perhaps meant to be used by experts on
that application area who are not necessarily expert programmers. An
external DSL consists of a language separate from the DSL processor's
host language. An internal DSL consists of the restricted usage of the
host language itself to create the specialized language syntax and
semantics.

Domain-specific languages and language-oriented programming have been
topics of considerable interest in recent years, both in industrial
applications and in academic research. For example, the popular Ruby on
Rails web framework consists of several ``internal'' DSLs in the
language Ruby, and Microsoft supports DSL development and use as a part
of its Visual Studio toolset. On the Java platform, JMock is an example
of an internal DSL to support unit testing.

Most software engineers will use DSLs in the future as a part of their
work. Many will be called upon to design them. This course seeks to
address both needs, with an emphasis on the latter.

In this course, we will also delve into the metaprogramming features of
languages, particularly for internal DSLs.

\hypertarget{catalog-description}{%
\subsection{Catalog Description}\label{catalog-description}}

\hypertarget{course-description-from-catalog}{%
\subsubsection{Course Description from
Catalog}\label{course-description-from-catalog}}

Study of topics on the design, implementation, use, and evolution of
artificial languages for the engineering of software. Languages of
interest include general-purpose programming languages, domain-specific
languages, and modeling languages as well as application programming
interfaces and collections of design patterns that implicitly define
languages.

\hypertarget{prerequisites}{%
\subsubsection{Prerequisites}\label{prerequisites}}

Graduate standing in computer science

\hypertarget{position-in-curricula}{%
\subsection{Position in Curricula}\label{position-in-curricula}}

This is a 600-level, programming-intensive course intended primarily for
MS and PhD students in computer science.

\hypertarget{course-goal}{%
\subsection{Course Goal}\label{course-goal}}

The primary goal of this course is to enhance the students' knowledge of
and experience with language-oriented programming techniques, in
particular, with the design, implementation, and use of domain-specific
languages (DSLs).

A secondary goal is to explore advanced features of one or more
programming languages useful in implementation of internal and external
DSLs.

\hypertarget{course-student-outcomes}{%
\subsection{Course Student Outcomes}\label{course-student-outcomes}}

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

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  describe the fundamental concepts and methods of domain-specific
  languages (DSLs), including both external and internal DSLs
\item
  analyze problems and apply DSL concepts and methods to design DSL
  solutions, if appropriate to the problem and environment
\item
  apply external DSL implementation methods and tools to develop
  text-based DSLs using advanced features of the selected implementation
  language(s)
\item
  apply internal DSL implementation methods and libraries to develop
  internal DSLs using advanced features of the selected host language(s)
\item
  evaluate alternative DSL designs and implementations to determine
  which are more appropriate according to the selected criteria
\item
  relate the DSL-related programming and metaprogramming concepts and
  methods to their previous programming knowledge and experiences
\item
  appreciate the elegance and usefulness of approaching software
  development as a language design and implementation activity
\item
  be confident in their abilities to study unfamiliar scholarly papers,
  technical documentation, and program designs and implementations and
  apply what they learn to new situations
\end{enumerate}

\hypertarget{spring-2018-section-details}{%
\section{Spring 2018 Section
Details}\label{spring-2018-section-details}}

\hypertarget{time-and-place}{%
\subsection{Time and Place}\label{time-and-place}}

10:00 - 10:50 a.m. Monday-Wednesday-Friday; Weir Hall 106

\hypertarget{instructor}{%
\subsection{Instructor}\label{instructor}}

\textbf{Dr.~H. Conrad Cunningham}, Professor, Computer and Information
Science\\
Office: 211 Weir Hall\\
Telephone: (662) 915-5358\\
Email:
\href{mailto:hcc@cs.olemiss.edu}{\nolinkurl{hcc@cs.olemiss.edu}}\\
Web: \href{http://www.cs.olemiss.edu/~hcc}{Professor Cunningham's
Homepage} (\url{http://www.cs.olemiss.edu/~hcc})\\
Office hours: 11:00 - 12:00 MWF; 1:00 - 2:00 MW; by arrangement

\hypertarget{teaching-assistant}{%
\subsection{Teaching Assistant}\label{teaching-assistant}}

None

\hypertarget{communication-policy}{%
\subsection{Communication Policy}\label{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.

If there is a Teaching Assistant assigned, students may also meet with
the Teaching Assistant during his or her 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.

\hypertarget{methods-of-instruction}{%
\subsection{Methods of Instruction}\label{methods-of-instruction}}

The instructional methods used in this course include readings from
professional papers, textbooks, the instructor's lecture notes and case
studies, and other course materials; classroom lectures and discussions;
assignments (DSL analysis, design, and implementation exercises, other
programming and design exercises, and quizzes); a term project, and
exams.

Note: Near mid-semester, the six students and I agreed to eliminate the
planned exams and focus the course around the assignments, an in-class
exercise, and the semester project.

\hypertarget{course-materials}{%
\subsection{Course Materials}\label{course-materials}}

The Spring 2018 offering will primarily use the Python 3 programming
language.

Note: I subsequently relaxed the language usage, using other languages
in my presentations and allowing students to use other languages in
their programming projects. However, all students actually used Python 3
and I used Python 3 for most new examples and notes I created.

\hypertarget{course-websites}{%
\subsubsection{Course Websites}\label{course-websites}}

The instructor will maintain a \href{csci658.html}{CSci 658 course
website} on the Department's server at
\url{http://www.cs.olemiss.edu/~hcc/csci658/csci658.html}. Most course
materials will be linked to the
\href{notes/658lectureNotes.html}{Lecture Notes} page.

The instructor will post any materials requiring restricted access on
the course's UM \href{http://blackboard.olemiss.edu}{Blackboard} site.

\hypertarget{required-textbooks}{%
\subsubsection{Required Textbooks}\label{required-textbooks}}

None

\hypertarget{recommended-textbooks}{%
\subsubsection{Recommended Textbooks}\label{recommended-textbooks}}

\begin{itemize}
\item
  Martin Fowler. \emph{Domain Specific Languages}, Addison Wesley, 2011.
\item
  Luciano Ramalho. \emph{Fluent Python}, O'Reilly. 2015.
\end{itemize}

\hypertarget{other-readings}{%
\subsubsection{Other Readings}\label{other-readings}}

\begin{itemize}
\item
  Journal and conference papers and book chapters related to the topics
  discussed in the course
\item
  Web-hosted materials (documentation, tutorials, blogs, etc.) on
  course-related topics (DSLs, Python 3, useful tools, etc.)
\end{itemize}

\hypertarget{hardware}{%
\subsection{Hardware}\label{hardware}}

The course does not require any special hardware. Students may use the
Department's Adler lab facilities, servers, and office systems or their
own desktop or laptop systems to complete the programming assignments.

\hypertarget{software}{%
\subsection{Software}\label{software}}

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

\begin{itemize}
\item
  Python 3.6+
\item
  Various Python 3 library modules (to be determined as the semester
  progresses)

  Note: The only non-standard Python library used was the parsing
  combinator library Parsita, which was used in one DSL example. I also
  used the GraphViz (dot) tool for another DSL example.
\item
  Tools for developing Python 3 programs and DSLs
\item
  A browser with plug-ins compatible with Blackboard

  Students can run the
  \href{http://www.olemiss.edu/info/browsercheck/}{Blackboard Browser
  Check} to verify the configuration of the browser for normal use of
  Blackboard.
\item
  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.
\end{itemize}

\hypertarget{technical-support}{%
\subsection{Technical Support}\label{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.

\hypertarget{course-topics}{%
\subsection{Course Topics}\label{course-topics}}

This is an experimental course offering, so the content will be revised
and elaborated as the semester progresses.

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Python 3 programming fundamentals.
\item
  Selected advanced Python 3 features (e.g., modules, objects,
  meta-object protocol, generators, higher-order functions, decorators,
  annotations).
\item
  Domain-specific language (DSL) concepts.
\item
  Analysis, design, and implementation methods for DSLs.
\item
  External DSL design patterns. Relevant features of Python 3 and
  associated libraries and tools.
\item
  Internal DSL design patterns. Relevant features of Python 3 and
  associated libraries and tools.
\end{enumerate}

\hypertarget{course-expectations-and-attendance-policy}{%
\subsection{Course Expectations and Attendance
Policy}\label{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.

\hypertarget{course-components}{%
\subsection{Course Components}\label{course-components}}

The original course structure used the following weightingL

\begin{longtable}[]{@{}ll@{}}
\toprule
Component & Weight\tabularnewline
\midrule
\endhead
Class Participation and Attendance & 10\%\tabularnewline
Assignments and Term Project & 45\%\tabularnewline
Examinations & 45\%\tabularnewline
\bottomrule
\end{longtable}

At mid-semester, the students and I agreed to use the following
weighting:

\begin{longtable}[]{@{}ll@{}}
\toprule
Component & Weight\tabularnewline
\midrule
\endhead
Class Participation and Attendance & 20\%\tabularnewline
Assignments 1-3 & 48\%\tabularnewline
Term Project & 32\%\tabularnewline
Examinations & 0\%\tabularnewline
\bottomrule
\end{longtable}

\hypertarget{class-participation}{%
\subsubsection{Class Participation}\label{class-participation}}

\begin{itemize}
\item
  All students should study the relevant portions of the course
  materials in conjunction with the class discussions and activities
  (i.e., before coming to class). The instructor will not always give
  explicit reading assignments, but the
  \href{notes/658lectureNotes.html}{Lecture Notes} web page should give
  the topics planned for the next class. If in doubt on what you need to
  read, please ask the instructor.
\item
  The instructor expects each student to participate in class
  discussions and activities.
\item
  The Department expects graduate students (especially those with
  assistantships) to attend most Department seminars.
\item
  To encourage class participation and attendance, the instructor will
  check the roll and may give written or oral quizzes or other short
  reports.
\end{itemize}

\hypertarget{assignments-and-projects}{%
\subsubsection{Assignments and
Projects}\label{assignments-and-projects}}

\begin{itemize}
\item
  There will be several assignments. One of these will be identified as
  the term project, which will bear about one-half of the credit for the
  assignment portion of the semester grade. You likely will be asked to
  design a DSL and provide implementations.

  Note: The revised course structure differed from the above.
\item
  Each student is expected to complete all required assignments.
\item
  Assignments may involve analysis of problems and the design,
  implementation, and testing of DSLs or the learning of supporting
  concepts, methods, and tools. An assignment submission may include a
  mix of design documents and programs.
\item
  Most of the assignments will involve programming. We will primarily
  use the Python 3 language, but we may use other languages as
  appropriate.
\item
  Unless otherwise stated in the assignment description, each student is
  expected to carry out each assignment without inappropriate
  collaboration with others. See the section on \emph{Academic
  Integrity}.
\item
  Most assignments will be submitted electronically using the Blackboard
  system.
\item
  In preparing and submitting homework assignments make sure that:

  \begin{itemize}
  \item
    your name, the course number or name, the assignment identifier, and
    individual exercises are clearly indicated in the content of each
    file or on the paper. (If it is a group assignment, give the group
    identifier and the names of all members.)
  \item
    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!
  \item
    for any assignments submitted on paper, staple your pages together
    in the upper left corner when viewed from the front.
  \item
    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).
  \end{itemize}
\item
  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.
\item
  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.
\end{itemize}

\hypertarget{examinations}{%
\subsubsection{Examinations}\label{examinations}}

\begin{itemize}
\item
  There will be two examinations: one near mid-term and one near the end
  of the semester. The final examination period published by the
  Registar's office (Friday, 11 May, 8:00 a.m.) may be used for the
  second exam, term project presentations, or other class activities.

  Note: The revised course structure eliminated the exams and placed
  greater weight on the assignments.
\item
  Please do not ask to take the final examination earlier than the time
  set for the entire class.
\item
  Each exam will cover all topics studied to that point. The final exam
  is comprehensive over all material covered during the semester.
\item
  Each exam may consist of some combination of in-class and take-home
  components.
\item
  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.
\end{itemize}

\hypertarget{optional-activities}{%
\subsubsection{Optional Activities}\label{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 DSL and advanced programming
language concepts.

\hypertarget{grading}{%
\subsubsection{Grading}\label{grading}}

\begin{itemize}
\item
  We will attempt to grade submitted assignments within approximately
  one week.
\item
  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.
\item
  +/- 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.
\end{itemize}

\hypertarget{university-of-mississippi-policies}{%
\section{University of Mississippi
Policies}\label{university-of-mississippi-policies}}

\hypertarget{students-with-disabilities}{%
\subsection{Students with
Disabilities}\label{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
\href{http://sds.olemiss.edu/}{\emph{Office of Student Disability
Services}} for information at 234 Martindale, 662-915-7128 (Phone),
662-915-7907 (TTY Phone), or
\href{mailto:sds@olemiss.edu}{\nolinkurl{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.

\hypertarget{copyrighted-materials}{%
\subsection{Copyrighted Materials}\label{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.

\hypertarget{appropriate-use-of-information-technology}{%
\subsection{Appropriate Use of Information
Technology}\label{appropriate-use-of-information-technology}}

The Information Technology (IT)
\href{https://secure4.olemiss.edu/umpolicyopen/ShowDetails.jsp?istatPara=1\&policyObjidPara=10642998}{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
\href{mailto:aup@olemiss.edu}{\nolinkurl{aup@olemiss.edu}}.

\hypertarget{academic-integrity}{%
\subsection{Academic Integrity}\label{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
\href{http://conflictresolution.olemiss.edu/wp-content/uploads/sites/2/2014/09/MBook14.pdf}{\emph{M
Book}}. For a complete listing of policies, please visit the University
Policy Directory.

As a student in CSci 658, 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.

\hypertarget{verification-of-student-attendance}{%
\subsection{Verification of Student
Attendance}\label{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.

\hypertarget{student-privacy-policy}{%
\subsection{Student Privacy Policy}\label{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
\emph{\href{https://secure4.olemiss.edu/umpolicyopen/ShowDetails.jsp?istatPara=1\&policyObjidPara=11873531}{Student
Information and Privacy Policy}} for more information.

\end{document}
