CSc 372 (Comparative Programming Languages) Syllabus
Spring 2017


Catalog Info     Resources     Topic Schedule     Grading     Univ./Dept. Policies
Class Personnel     Objectives     Dishonesty     Class Policies     Caveat

General Catalog Information:

Description: Introduction to several major high-level programming languages and their characteristics. Programming projects are required in at least three languages.
Lecture: Mondays, Wednesdays, and Fridays, 2:00 p.m. - 2:50 p.m., BioW 208
Prerequisite(s): Passing grades in either CSc 127B or CSc 227, and CS Major status.
This class requires that you write non-trivial programs in three or more languages. This semester, I anticipate that there will be four: Ruby, Haskell, Prolog, and one of your choosing. There will also be some written homework assignments covering general concepts of programming languages.
Credits: 3
Final Exam: Friday, May 5, 2017, 1:00 p.m. - 3:00 p.m. The final is comprehensive, and will be given on this date at this time. Make your travel plans accordingly.

Class Personnel:

Name Office Email Phone Fax Office Hours
Instructor Lester I. McCann, Ph.D. G-S 819 mccannl@acm.org 621-3498 621-4246 M 10:30-noon, R 1-2:30pm
UG TA Patrick Hickey G-S 856 patrickhickey@email --- 621-4246 T&R 10-noon
UG TA Andrea Padula G-S 856 apadula@email --- 621-4246 M&W 3-4pm, T 2-4pm

The TA(s) have successfully completed this class (or its equivalent) and is/are paid by the Department of Computer Science to help me help you learn the material. In this class, the TA(s) host office hours, field questions via email and the message board, grade homeworks, and assist me with exam grading. I expect that you'll find the TA(s) to be a valuable resource.

Please keep in mind that it is possible to meet us outside of office hours. Contact us to make an appointment.

Information Resources:

Homepage: http://www.cs.arizona.edu/classes/cs372/spring17/
Textbook: Programming Languages -- Principles and Practice (Louden/Lambert), 3rd ed., Cengage, 2012. is the required text. There is a Student Companion Site, but it only has the errata list and an archive of files.
Used copies of this edition of the text are available, as are rentals and an eBook version.
Class Discussions: We will be using Piazza for outside-of-class discussions and announcements. Click here to access the CSc 372 message board .

Course Objectives and Expected Learning Outcomes:

Topics and Subtopics Sections In Text Sample Learning Objectives
1. Programming Language History and Basics
a. Origins 1.1 - 1.3 • What were the first programming languages?
b. Defining Languages 1.4 • How are programming languages specified?
c. Translating Languages 1.5 • Distinguish compilation and interpretation
2. Design Principles
a. Historical Consideration 2.1 • How did the first languages come to be?
b. Fundamental Concepts 2.2 - 2.5 • What makes a language 'good'?
3. Object-Oriented Languages
a. Motivations 5.1 • Why were OO languages created?
b. Design Considerations 5.5 • Classes, Inheritance, Polymorphism, etc.
c. Implementation Considerations 5.6 • Object Allocation, Initialization, etc.
d. Example Language: Ruby Lecture • Successfully code non-trivial programs
4. Syntax
a. Context-Free Grammars and BNF 6.2 • Why are CFGs used for programming languages?
• Be able to use a BNF to accept a program
b. Syntax Trees and Diagrams 6.3, 6.5 • Distinguish parse and syntax trees
• Understand issues with ambiguous grammars
c. Syntax and Semantics 6.7 • Be able to distinguish from lexical structure
5. Functional Languages
a. Motivations 3.1 • How are functional languages superior to imperative?
b. Design Considerations 3.2 - 3.4, 3.6 • What is currying?
• Explain the effects of delayed evaluation
• Why are lambda functions important?
c. Example Language: Haskell 3.5, Lecture • Successfully code non-trivial programs
6. Semantics
a. Binding of Attributes 7.1 • Distinguish static and dynamic binding
b. Scoping 7.2 • Understand how languages define scope
c. Symbol Tables 7.3 • How do static and dynamic tables differ?
d. Naming 7.4 • Explain the value of name overloading
e. Environment 7.5 • How do languages store allocation bindings?
f. Constants vs. Variables 7.6 • Understand the differences in semantics
g. Semantic Headaches 7.7 • How do semantics challenge programmers?
7. Logic Languages
a. Motivation 4.1 • When should a logic language be considered?
b. Horn Clauses 4.2 • Explain the utility of this structuring
c. Resolution and Unification 4.3 • Demonstrate how these are used to reach goals
d. Example Language: Prolog 4.4 • Successfully create non-trivial databases
8. Data Typing
a. Typing Basics 8.1, 8.2 • What is a data type?
b. Type Constructors 8.3 • Explain how set operators can create new types
c. Type Equivalence 8.5 • Distinguish between name and structural equivalence
d. Type Checking 8.6 • How can types be considered equivalent?
e. Type Conversion 8.7 • What are the dangers of implicit conversions?
f. Polymorphism 8.8, 8.9 • How are polymorphic types managed?
9. Conditional Statements and Exceptions
a. Ifs and Guarded Ifs 9.2 • From where did the If statement come?
b. Ambiguous ELSEs 9.2 • Be able to correctly interpret nested IFs
c. Other Conditional Statements 9.2 • In which circumstances should an IF be replaced?
10. Iteration
a. Iteration Structures 9.3 • How are loops related to conditionals?
• Appreciation of iteration's varieties
b. Loop Termination 9.4 • Are unstructured exits evil?
c. The GOTO Statement 9.4, Lecture • Why is its use so contentious?
And for whatever time we may have left...
11. Something More!
a. Might be ADTs ... 11 • How do modules support separate compilation?
b. ... or Formal Semantics ... 12 • Distinguish operational, denotational, and axiomatic
c. ... or maybe a little Parallel Programming 13 • How are parallel programs policed?

Topics may be added, removed, or reordered as time and circumstances dictate.

Schedule of Topics and Activities:

A schedule of topics is required by the University. Please be aware that any number of unforeseen circumstances can cause a schedule to become inaccurate. Thus, you should not rely on this schedule. It is your responsibility to pay attention to, and adhere to, changes announced in class, by email, and via the discussion board.

     Week   Class #   Scheduled Topic(s)       Assigned        Due
     ----   -------   ------------------       --------   --------------
       1      1,2      Class Info, 1              H1            -- 
       2      3,4      1, 2                       --      H1 (Fri, 1/20) 
       3      5-7      3, Ruby                    P1            --
       4      8-10     Ruby                       --            --
       5     11-13     4, 5                       H2      P1 (Fri 2/10)
       6     14-16     5, Haskell                 --      H2 (Fri 2/17)
       7     17-19     Haskell, Exam #1 (2/24)    P2            --
       8     20-22     Haskell                    --            --
       9     23-25     6,SNOBOL,Icon(B.Mitchell)  --      P2 (Fri 3/10)
  [ -------------------------- SPRING BREAK! ----------------------------- ]
      10     26-28     6                          H3            --
      11     29-31     6,7                        --      H3 (Fri 3/31)
      12     32-34     Prolog, Exam #2 (4/07)     J1            --
      13     35-37     Prolog                     P3            --
      14     38-40     Prolog, 8                  --      P3 (Fri 4/21)
      15     41-43     9, 10                      --            --
      16     44,45     10                         --      J1 (Wed 5/03)
     Finals    --      Final Exam (Fri 1:00pm)     

(The original post-break schedule, for reference:

      10     26-28     6, 7                       H3            --
      11     29-31     7, Prolog                  --      H3 (Fri 3/31)
      12     32-34     Prolog, Exam #2 (4/07)     P3            --
      13     35-37     Prolog, 8                  J1            --
      14     38-40     8, 9                       --      P3 (Fri 4/21)
      15     41-43     9                          --            --
      16     44,45     Catch-Up / Bonus Topics    --      J1 (Wed 5/03)    )

Academic Dishonesty (i.e., Cheating):

See Also: • The Department of Computer Science Course Policy on Collaboration: http://www.cs.arizona.edu/policies/collaboration.html
• The University of Arizona Code of Academic Integrity: http://deanofstudents.arizona.edu/codeofacademicintegrity
• The Arizona Board of Regents list of Prohibited Conduct: https://azregents.asu.edu/rrc/Policy%20Manual/5-303-Prohibited%20Conduct.pdf
• The Arizona Board of Regents Student Code of Conduct: https://azregents.asu.edu/rrc/Policy%20Manual/5-308-Student%20Code%20of%20Conduct.pdf (in particular, see part F, "Prohibited Conduct")

Most, if not all, assignments in this class will be individual assignments, to be worked on outside of class. All individual work assigned to you in this class is to be completed only by you. It is not acceptable for you to `borrow' (a.k.a. steal, copy, coerce, etc.) solutions or parts of solutions from other people or have other people write part or all of your solutions for you. Yes, getting answers and solutions from the Internet is a violation of academic dishonesty! However, it IS acceptable (and encouraged!) for students to help one another understand the assignment requirements and other high-level issues. In short, do your own work, but feel free to discuss conceptual difficulties with each other. Of course, you may always ask me or a TA for help, but don't expect that we'll just hand you solutions; we'll make you work for them. Doing is learning!

The class policy on cheating is simple: If we determine by a preponderance of the evidence that a student or students violated one or more of the policies of academic conduct governing this class, at minimum all complicit students will receive no points for the academic activity or activities in question. Additional sanctions are possible depending on the circumstances of the offense(s) and the policies of the department, university, and Arizona Board of Regents, up to and including expulsion from the university. Academic integrity infractions are reported to both the Dean of Students and the Dean of the College of Science. If you have a history of violations, the penalty is likely to be much worse than just a zero on an assignment. Multiple violations in this class will result in a recommendation of a failing course grade, at minimum. We take academic dishonesty very seriously, as you should be able to tell; we expect you to take it just as seriously.

Please take the time to read the references linked above. Ignorance of the policies is not an acceptable excuse for their violation. For your convenience, here is the section of the University's Code of Academic Integrity entitled "Prohibited Conduct":

Conduct prohibited by this Code consists of all forms of academic dishonesty, including, but not limited to: 1. Cheating, fabrication, facilitating academic dishonesty, and plagiarism as set out and defined in the Student Code of Conduct, ABOR Policy 5-308-E.6, E.10, and F.1. 2. Submitting an item of academic work that has previously been submitted without fair citation of the original work or authorization by the faculty member supervising the work. 3. Violating required professional ethics rules contained or referenced in the student handbooks (hard copy or online) of undergraduate or graduate programs, or professional colleges. 4. Violating health, safety or ethical requirements to gain any unfair advantage in lab(s) or clinical assignments. 5. Failing to observe rules of academic integrity established by a faculty member for a particular course. Attempting to commit an act prohibited by this Code. Any attempt to commit an act prohibited by these rules shall be subject to sanctions to the same extent as completed acts. 6. Assisting or attempting to assist another to violate this Code.

The bottom line: Do your own work! If you have any doubts, please come talk to us -- before you do anything you might regret.

Grades and Grading:

See Also: • UA General Catalog's Grades and the Grading System: http://catalog.arizona.edu/policy/grades-and-grading-system

Class Policies:

University and Department Policies:

Caveat:

The information contained in this syllabus, other than the grade and absence policies, are subject to change with reasonable advance notice, as deemed appropriate by the instructor. Whenever possible, changes will be announced to the class before the on-line version of this document is altered.