Department of Computing and Information Science
Queen's U.


Course Description - winter 2023

Classes Textbook Instructor Goals of the Course Assignments and Tests Grading Software


Tuesday 2:30 PM Thursday 8:30 AM Friday 1:30 PM

The Tuesday and Friday classes are held in Biosciences Room 1102 and the Thursday classes are held in Dunning Auditorium.

Required textbook

Supplementary reading

Suggested additional reading may be found in the Introductions to Parts A and C and in the additional-reading section at the end of every chapter in the text.

There are many textbooks covering the material in the first half of the course (Part C in our textbook).


Teaching assistants: For information on the teaching assistants please login to your CISC223/CMPE223 onQ page.

Goals of the course

The first part of the course provides an introduction to several conceptual tools that are widely used in computing: state diagrams, regular expressions and context-free grammars. In the second part you will learn to verify the correctness of (small) programs using logic based techniques. This part of the course builds on material you have studied, for example, in CISC 204. Additionally, we will briefly discuss the theoretical limits of algorithmic computation.

Learning Outcomes

CISC/CMPE223 considers the standard School of Computing syllabus to be part of the syllabus.

Academic Integrity

Please see a Statement on Academic Integrity from the Arts and Science web site posted here.


There will be 4 sets of assignments. The first three assignments are due at 2:00 PM on Thursdays of weeks 3, 5 and 8 and the fourth assignment is due at 2:00 PM on Monday of week 12. For rules concerning the assignment submission please see the CISC223/CMPE223 onQ page. The assignment questions will be posted at the CISC223/CMPE223 onQ page.
The assignments must be based on individual work. The first three assignments are each worth 6% of your course mark and the fourth assignment is worth 10%.

The assignments are submitted in onQ (file submission). Assignments sent by email are not accepted.

onQ quizzes and final exam

The course will have two quizzes written in onQ. Each quiz has 90 minutes length and is worth 16% of your course grade. The onQ quizzes are written on Tuesday February 28 and on Thursday March 23.

The final exam will be held during the regular winter term final examination period. The final exam is written in-person on campus. The final exam is 3 hours in length and is worth 40% of your course grade. The exam is closed book. You can bring in one 8.5 x 11 inch sheet of notes and use it during the exam.


Your grade is calculated as follows.

4 Assignments
(asn's 1, 2, 3 are worth 6% each, assignment 4 is 10%)
onQ-quiz 1 16%
onQ-quiz 2 16%
Final exam 40%
Total: 100%

Note: The components of this course will receive numerical marks that will be used to calculate a percentage final grade, as explained above. The final grade you receive for the course will be derived by converting your percentage grade to a letter grade according to Queen's official grade conversion scale.

Note2: The individual grade items (for the assignments and quizzes) will be posted on the onQ page where you can check them. However, your percentage grade for the entire course will be calculated using a spreadsheet outside onQ.

Accommodations Statement

Queen's University is committed to achieving full accessibility for persons with disabilities. Part of this commitment includes arranging academic accommodations for students with disabilities to ensure they have an equitable opportunity to participate in all of their academic activities. The Senate Policy for Accommodations for Students with Disabilities was approved at Senate in November 2016 (see PDF). If you are a student with a disability and think you may need accommodations, you are strongly encouraged to contact Queen's Student Accessibility Services (QSAS) and register as early as possible. For more information, including important deadlines, please visit the QSAS website.

Academic Consideration for Students in Extenuating Circumstances

Queen’s University is committed to providing academic consideration to students experiencing extenuating circumstances. For more information, please see the Senate Policy on Academic Consideration for Students in Extenuating Circumstances. Each Faculty has developed a protocol to provide a consistent and equitable approach in dealing with requests for academic consideration for students facing extenuating circumstances. Arts and Science undergraduate students should consult the Faculty of Arts and Science protocol and the portal where a request can be submitted. Students in other Faculties and Schools who are enrolled in this course should refer to the protocol for their home Faculty.


Programming Language

A small fragment of the C programming language is used in the text. A compact reference manual may be found in Appendix A of the text book and
on-line as a PDF file.

The text assumes that a file specdef.i of "headers" and definitions has been included into all programs; this is Program 3 on page 7 of the text.

An on-line reference manual on C programming:

Programming Platforms

Any implementation of C (or C++) may be used, but for this course we recommend an interpretive implementation of C called EiC. Although its run-time performance is relatively poor (comparable to Java), it has good error messages and run-time checks.

EiC has been installed on the CASLab Linux servers and workstations. For more information about accessing CASLab Linux, consult the CASLab How To.

To use EiC to parse and run a C program file prog.c in the current directory, just enter a

eic prog.c
at a command-line prompt. Use re-direction to read from a file input or to write to a file output, as in
eic prog.c < input > output
To get a summary of available command-line options and directives, enter
eic -h
For more details see the link EiC.

The following on-line tutorials will be useful if you are unfamiliar with Unix-like systems:

Several other free C or C++ implementations which may be of interest are available:

Program Editors

Any text editor (such as Notepad on Windows) may be used to create and modify C programs. We suggest you use one window as a command-line interface (running EiC as necessary), and a separate window (or windows) to edit C source files.

On Unix-like systems such as Solaris and Linux, the most popular text editors are vi (or an improved version such as vim) and emacs (or an improved version such as xemacs); but if you are not familiar with either of these, we advise you to use nedit at a GUI (graphical user interface) and jed at a CLI (command-line interface).

An "integrated development environment" (IDE) combining a program editor, a compiler or interpreter, and possibly a debugger, won't be needed for the relatively small and, one hopes, verified programs you will be coding in this course.

PDF Readers

Assignments and other documents posted at this web site will be in Portable Document Format (PDF). The CASLab computers you use should have PDF viewers installed.

If you want to install a PDF viewer on your own computer, viewers for most platforms are available at no charge here: