Effective: Early Spring 8-Week 2018/2019

CISS 445: Programming Languages

Back to Top

  Course Description

Survey and comparison of various programming languages and the concepts used in designing, specifying, and evaluating languages. Topics include formal specification, language constructs, translation, binding and binding times, and logical and functional programming.

Prerequisite: CISS 350 or CISS 358

Proctored Exams: Final



  • Tucker, Allen B. and Robert E. Noonan. Programming Languages Principles and Paradigms. 2nd. McGraw Hill. 
    • ISBN-978-0-07-286609-4

MBS Information

Textbooks for the course may be ordered from MBS Direct. You can order

For additional information about the bookstore, visit http://www.mbsbooks.com.

  Course Overview

The main objective of CISS 445 is to provide students with an introduction to the main elements of contemporary programming languages and provide the necessary tools to enable each student to be able to critically evaluate programming languages.

  Technology Requirements

Participation in this course will require the basic technology for all online classes at Columbia College:
  • A computer with reliable Internet access
  • A web browser
  • Acrobat Reader
  • Microsoft Office or another word processor such as Open Office

You can find more details about standard technical requirements for our courses on our site.

  Course Objectives

  • To understand formal methods for describing language syntax, language design issues and tradeoffs, bindings and binding times, lexical analysis and parsing, and a wide variety of language constructs and associated implementation issues.
  • To explore a variety of languages including procedural, functional, and logic languages.

  Measurable Learning Outcomes

  • Explain how language syntax is defined using formal methods such as Backus Normal Form (BNF) and Extended Backus Normal Form (EBNF).
  • Identify the main issues and tradeoffs one must consider when designing new programming languages.
  • Identify the language constructs that must be addressed when designing new programming languages.
  • Explain how to perform lexical analysis and parsing.
  • Explain binding and binding times.
  • Identify the characteristics associated with procedural, functional, and logic programming languages.
  • Create programs using procedural, functional, and logic programming languages.


Grading Scale

Grade Points Percent
A 522-580 90-100%
B 464-521 80-89%
C 406-463 70-79%
D 348-405 60-69%
F 0-347 0-59%

Grade Weights

Assignment Category Points Percent
Discussion 160 28%
Dropbox Assignments 80 14%
Quizzes 100 17%
Research Paper 120 21%
Final Exam 120 21%
Total 580 100%

  Schedule of Due Dates

Week 1

Assignment Points Due
Discussion 1 10 Wednesday/Sunday
Discussion 2 10
Dropbox Assignment 1 10 Sunday

Week 2

Assignment Points Due
Discussion 3 10 Wednesday/Sunday
Discussion 4 10
Dropbox Assignment 2 10 Sunday
Research Paper Topic -
Quiz 1 25
Proctor Information N/A

Week 3

Assignment Points Due
Discussion 5 10 Wednesday/Sunday
Discussion 6 10
Dropbox Assignment 3 10 Sunday

Week 4

Assignment Points Due
Discussion 7 10 Wednesday/Sunday
Discussion 8 10
Dropbox Assignment 4 10 Sunday
Quiz 2 25

Week 5

Assignment Points Due
Discussion 9 10 Wednesday/Sunday
Discussion 10 10
Dropbox Assignment 5 10 Sunday

Week 6

Assignment Points Due
Discussion 11 10 Wednesday/Sunday
Discussion 12 10
Dropbox Assignment 6 10 Sunday
Quiz 3 25

Week 7

Assignment Points Due
Discussion 13 10 Wednesday/Sunday
Discussion 14 10
Dropbox Assignment 7 10 Sunday
Research Paper 120

Week 8

Assignment Points Due
Discussion 15 10 Wednesday/Saturday
Discussion 16 10
Dropbox Assignment 8 10 Friday
Quiz 4 25
Final Exam 120 Saturday
Total Points: 580

  Assignment Overview


Readings should be completed prior to submitting assignments for the week.


These are an opportunity for us to discuss specific questions and topics that arise from the assigned readings or applications of the newly acquired information. You should read others’ postings, including the instructor's.

For each discussion question/topic, you are required to post your initial response, or answer to the question/topic, and respond to a minimum of 3 of your classmates’ initial responses for each discussion question. Each posting should be well thought out and add value to the overall discussion. Make sure you use the proper citation with regards to your sources.

Your initial posting is due by midnight CST on Wednesdays to give your classmates sufficient time to respond. When responding to postings, keep in mind that a late Sunday posting is not sufficient, as that type of posting doesn’t provide time for your classmates to read it or respond.

Dropbox Assignments

These assignments assist you in applying the information that you are learning from the assigned readings.

Each assignment will be graded on the basis of accuracy, completeness, and neatness. These assignments must be submitted via the course Dropbox.

Research Paper

The subject of your paper is fairly open; however, since this class is technology related, please constrain your topic to this area of study.  For additional guidance regarding topic selection, review the Research Paper Guidelines in the Assignment Overview section of the course Content area.  

All undergraduate papers are to be 10 pages, double spaced. The title page and bibliography are not included in this 10 page requirement. Maintain reasonable space between paragraphs and pay particular attention to the spacing around figures that you include. The use of graphical items should be limited.  Font size is limited to 12 and the margins are 1 inch all around. You must use a style process such as MLA.

Please submit an original paper for this assignment, do not re-use a paper that you have submitted for another course.  A high percentage on the Originality Report will affect your grade. 


There will be four timed, open book quizzes in the course on various chapters of the textbook to evaluate comprehension of assigned reading.


You will need to complete a Final exam, which is proctored, closed book and notes, and computerized (available via the Quizzes area of the course). The exam will become available on Monday and must be completed by 5:00 p.m. CT Saturday of the week assigned.

  Course Outline

Click on each week to view details about the activities scheduled for that week.

Reading Assignment

Chapter 1

Discussion 1

Introduce yourself to the class. Include your name, profession, hobbies, and any other information that you would like to share.

Due midnight Wednesday

Discussion 2

Exercise: 1.4 page 21
Give a feature of C, C++ or Java that illustrates orthogonality. Give a feature different from the one discussed in the text that illustrates non-orthogonality.

Due midnight Wednesday

Dropbox Assignment 1
  1. In at least one paragraph and in your own words, what is the purpose of the four main programming paradigms? Please be specific.
  2. In at least one page, discuss the compilation process (Figure 1.4) and what each step does (Lexical Analyzer, Syntactic Analyzer, etc.). Think about what is happening to the source code as it goes through each phase. Also, what is the difference between a compiler and an interpreter?

Due midnight Sunday

Reading Assignment

Chapter 2

Chapter 3

Discussion 3

Exercise 2.11 page 56
Argue convincingly that the parse tree given in Figure 2.2 for the expression 5-4+3 is the only possible parse tree. Hint: enumerate the other possibilities and show that they do not work.

Due midnight Wednesday

Discussion 4

Exercise 3.19 page 83
Can a language have no reserved words? That is, suppose every reserved work (such as is and for) were merely a predefined identifier which the programmer is free to redefine. Can such a language exist? Explain.

Due midnight Wednesday

Dropbox Assignment 2

Part A – Exercise 2.19 page 56
Give a set of grammar rules that define the syntax of a variable declaration in Perl. Give an example. Hint: your answer should include a BNF or EBNF notation of the rules.

Part B – Exercise 3.7 page 82
What part(s) of the language PHP are case sensitive? What part(s) are case insensitive? Can you find rationale for the separation?

Due midnight Sunday

Research Paper Topic

Your topic for the research paper is due this week. Please read the document in the Content section under Student Resources titled "Research Paper Guidelines - Undergraduate" for help in choosing a topic and for specific requirements.

​Due midnight Sunday

Quiz 1

The quiz will cover chapters 1-3.

​Due midnight Sunday

Proctor Information
Submit your proctor form to the appropriate Dropbox folder by the end of the week. Remember to “Save” the form before placing it in Dropbox. See the Content area for more information.
Reading Assignment

Chapter 4

Discussion 5

Exercise 4.3 page 99
C and C++ distinguish between declarations and definitions. What is the distinction? Give an example of each.

Due midnight Wednesday

Discussion 6

Exercise 4.4 page 99
Explain the use of header files in C and C++. Why doesn’t Java use header files?

Due midnight Wednesday

Dropbox Assignment 3

Pick one of the following languages: Python, Modula, Ada, C#, or Perl. After consulting an authoritative reference, discuss each of the following requirements for that language. Identify your reference source.
Declaration before use.
Overloading of operators for programmer-defined types. 
Binding time of array size. 
What constitutes a scope? 
Location of a declaration within a scope. 

Due midnight Sunday

Reading Assignment

Chapter 5

Chapter 6 [sections 6.1 and 6.2]

Discussion 7

Exercise 5.9 page 133
What is the difference between a big-endian and a little-endian machine? Cite a least one computer architecture of each kind. How do these architectures affect the values given in Table 5.2?

Due midnight Wednesday

Discussion 8

Exercise 6.3 page 151
Argue that the Java method that implements the function V for Declarations is correct, in the sense that it covers all the cases that the Type Rule itself covers.

Due midnight Wednesday

Dropbox Assignment 4

Part  A - Exercise 5.10 page 133
Ada provides two remainder operators. What is the difference between the two? For your favorite language and machine, which remainder operator do they implement?

Part B – Exercise 6.11 page 152
Modify Type Rule 6.5 so that it checks the validity of an ArrayRef (see Figure 2.14). See the course announcement for what to hand in.

Due midnight Sunday

Quiz 2

The quiz will cover Chapters 4-6 and is found in the Quizzes area.

​Due midnight Sunday

Reading Assignment

Chapter 7

Discussion 9

Exercise 7.12 page 195
Consider the Ada I/O errors summarized in Table 7.4. Using web-based sources, determine if a similar collection of I/O errors is defined for C. What about C++?

Due midnight Wednesday

Discussion 10

Exercise 7.14 page 195
Modify the invalid numeric input example of Section 7.7.2 so that the user has at most three tries to input a valid integer.

Due midnight Wednesday

Dropbox Assignment 5

Part A – Exercise 7.6 page 195
For your C/C++ compiler, verify whether or not the cast of the integer257 to a char results in an error.

Part B – Exercise 7.7 page 195
For your Java compiler/interpreter, verify whether or not the cast of the integer 655537 to a char results in an error. Be sure to use explicit type casting as opposed to implicit type casting.

Due midnight Sunday

Reading Assignment

Chapter 8 [sections 8.1, 8.2, and 8.3]
Chapter 9

Discussion 11

Exercise 8.3 page 222
Discuss the advantages and disadvantages of disallowing assignment statements of the form b = a, where a has the value undef. What changes would you have to make to the Clite semantic rules and interpreter to enforce this change?

Due midnight Wednesday

Discussion 12

Exercise 9.1 page 241
Consider the C-like program illustrated in the text for this exercise. What is the final value of array x for each of the following parameter passing assumptions?
1. Argument x is passed by value. 
2. Argument x is passed by reference. 
3. Argument x is passed by value-result. 

Due midnight Wednesday

Dropbox Assignment 6

Part A – Exercise 8.5, page 223
Modify the definition of the operators && and || so that they do not use short circuit evaluation. Give the new semantic rules. Discuss the needed modifications to the implementation. [Answer requires modification to the Semantics.java source file located with Week 6’s content].

Part B – Exercise 8.8 page 223
Using Table 7.3 as a guide, write a trace table for the Clite program displayed in the text for this exercise. See the course announcement for what to hand in.

Due midnight Sunday

Quiz 3

The quiz will cover Chapters 7-9 and is found in the Quizzes area of the course.

​Due midnight Sunday

Course Evaluation
Please evaluate the course. You will have an opportunity to evaluate the course near the end of the session. A link sent to your CougarMail will allow you to access the evaluation. Please note that these evaluations are provided so that I can improve the course, find out what students perceive to be its strengths and weaknesses, and in general assess the success of the course. Please do take the time to fill this out.
Reading Assignment

Chapter 10 [sections 10.1, 10.2, and 10.3]
Chapter 11

Discussion 13

Exercise 10.2, page. 260
Using the example Clite function defined in figures 10.1 and 10.5, construct three different calls; each should violate one of the Type Rules 10.6, 10.7 and 10.8, but not the other two.

Due midnight Wednesday

Discussion 14

Exercise 11.7, page 276
What are the trade-offs, in time and space, when the allocation of dynamic arrays occurs in the run-time stack rather than the heap?

Due midnight Wednesday

Dropbox Assignment 7

Part A – Exercise 10.3 – part (a) only, page 260
Consider the statement k = k – 1; inside the while loop of the program of Figure 10.5. Remove this statement from the program.
(a) Will this change raise a syntax or type error for this modified program? Explain.

Part B – Exercise 11.5, page 276
Expand the meaning rule for a Call to Clite (refer to Meaning Rule 10.1, pg. 249) to incorporate the idea of heap memory allocation and recovery for an array parameter or local variable. This change will naturally utilize the new and delete functions discussed at the beginning of this chapter.

Due midnight Sunday

Research Paper
Due midnight Sunday
Reading Assignment

Chapter 12
Chapter 13

Discussion 15

Exercise 12.1, page 307
Discuss the advantages and disadvantages of having case-sensitive identifiers in a programming language, with respect to program reliability, type checking and compile-time complexity.

Due midnight Wednesday

Discussion 16

Exercise 13.27, page 360
The class Set is an important abstract class in Java. Its implementations include HashSet and SortedSet. Do some research to answer the following questions:

(a) What is the difference between a HashSet and a HashMap? Would the former be a candidate for implementation of the Concordance class instead of the latter? Why or why not? 

(b) What comparable classes exist in the C++ Standard Library for the Java HashSet and HashMap? What are the major differences in their design? 

(c) What comparable classes exist in Ada for the Java HashSet and HashMap? What are the major differences in their design? 

Due midnight Wednesday

Dropbox Assignment 8

Part A – Exercises 12.4, page 307
Write a short paper (1 -2 pages) which compares and contrasts arrays (with integer subscripts) in C, Ada, and Perl.

Part B – Exercises 13.13, page 358
Using the Concordance.java source file located with Week 8’s content, extend the program so that it can report, for each word in the list, its frequency (number of occurrences) in addition to the line numbers where it occurs.

Due midnight Friday

Quiz 4

The quiz will cover Chapters 10, 11, 12 and 13.

​Due midnight Friday

Final Exam
The exam will cover Chapters 1 thru 13 in the textbook. You will have 120 minutes to complete the computerized, proctored exam. You may take the exam any time Monday thru 11:59 p.m. CT Saturday as coordinated with your proctor. The exam is closed book and closed notes.

  Course Policies

Student Conduct

All Columbia College students, whether enrolled in a land-based or online course, are responsible for behaving in a manner consistent with Columbia College's Student Conduct Code and Acceptable Use Policy. Students violating these policies will be referred to the office of Student Affairs and/or the office of Academic Affairs for possible disciplinary action. The Student Code of Conduct and the Computer Use Policy for students can be found in the Columbia College Student Handbook. The Handbook is available online; you can also obtain a copy by calling the Student Affairs office (Campus Life) at 573-875-7400. The teacher maintains the right to manage a positive learning environment, and all students must adhere to the conventions of online etiquette.


Your grade will be based in large part on the originality of your ideas and your written presentation of these ideas. Presenting the words, ideas, or expression of another in any form as your own is plagiarism. Students who fail to properly give credit for information contained in their written work (papers, journals, exams, etc.) are violating the intellectual property rights of the original author. For proper citation of the original authors, you should reference the appropriate publication manual for your degree program or course (APA, MLA, etc.). Violations are taken seriously in higher education and may result in a failing grade on the assignment, a grade of "F" for the course, or dismissal from the College.

Collaboration conducted between students without prior permission from the instructor is considered plagiarism and will be treated as such. Spouses and roommates taking the same course should be particularly careful.

All required papers may be submitted for textual similarity review to Turnitin.com for the detection of plagiarism. All submitted papers may be included in the Turnitin.com reference database for the purpose of detecting plagiarism. This service is subject to the Terms and Conditions of Use posted on the Turnitin.com site.


There will be no discrimination on the basis of sex, race, color, national origin, sexual orientation, religion, ideology, political affiliation, veteran status, age, physical handicap, or marital status.

Student Accessibility Resources

Students with documented disabilities who may need academic services for this course are required to register with the office of Student Accessibility Resources. Until the student has been cleared through this office, accommodations do not have to be granted. If you are a student who has a documented disability, it is important for you to read the entire syllabus as soon as possible. The structure or the content of the course may make an accommodation not feasible. Student Accessibility Resources is located in Student Affairs in AHSC 215 and can be reached by phone at (573) 875-7626 or email at sar@ccis.edu.

Online Participation

You are expected to read the assigned texts and participate in the discussions and other course activities each week. Assignments should be posted by the due dates stated on the grading schedule in your syllabus. If an emergency arises that prevents you from participating in class, please let your instructor know as soon as possible.

Attendance Policy

Attendance for a week will be counted as having submitted any assigned activity for which points are earned. Attendance for the week is based upon the date work is submitted. A class week is defined as the period of time between Monday and Sunday (except for week 8, when the work and the course will end on Saturday at midnight.) The course and system deadlines are based on the Central Time Zone.

Cougar Email

All students are provided a CougarMail account when they enroll in classes at Columbia College. You are responsible for monitoring email from that account for important messages from the College and from your instructor. You may forward your Cougar email account to another account; however, the College cannot be held responsible for breaches in security or service interruptions with other email providers.

Students should use email for private messages to the instructor and other students. The class discussions are for public messages so the class members can each see what others have to say about any given topic and respond.

Late Assignment Policy

An online class requires regular participation and a commitment to your instructor and your classmates to regularly engage in the reading, discussion and writing assignments. Although most of the online communication for this course is asynchronous, you must be able to commit to the schedule of work for the class for the next eight weeks. You must keep up with the schedule of reading and writing to successfully complete the class.

No late discussion posts will be accepted.

No late assignments will be accepted without extenuating circumstances beyond the control of the student and with instructor notification prior to the due date (Columbia College Catalog).

Course Evaluation

You will have an opportunity to evaluate the course near the end of the session. A link will be sent to your CougarMail that will allow you to access the evaluation. Be assured that the evaluations are anonymous and that your instructor will not be able to see them until after final grades are submitted.

Proctor Policy

Students taking courses that require proctored exams must submit their completed proctor request forms to their instructors by the end of the second week of the session. Proctors located at Columbia College campuses are automatically approved. The use of ProctorU services is also automatically approved. The instructor of each course will consider any other choice of proctor for approval or denial. Additional proctor choices the instructor will consider include: public librarians, high school or college instructors, high school or college counseling services, commanding officers, education service officers, and other proctoring services. Personal friends, family members, athletic coaches and direct supervisors are not acceptable.

  Additional Resources

Orientation for New Students

This course is offered online, using course management software provided by Desire2Learn and Columbia College. The course user guide provides details about taking an online course at Columbia College. You may also want to visit the course demonstration to view a sample course before this one opens.

Technical Support

If you have problems accessing the course or posting your assignments, contact your instructor, the Columbia College Helpdesk, or the D2L Helpdesk for assistance. Contact information is also available within the online course environment.

Online Tutoring

Smarthinking is a free online tutoring service available to all Columbia College students. Smarthinking provides real-time online tutoring and homework help for Math, English, and Writing. Smarthinking also provides access to live tutorials in writing and math, as well as a full range of study resources, including writing manuals, sample problems, and study skills manuals. You can access the service from wherever you have a connection to the Internet. I encourage you to take advantage of this free service provided by the college.

Access Smarthinking through CougarTrack under Students -> Academics -> Academic Resources.