CS 3520: Programming Languages

Fall 2020 Syllabus

Introduction to different models of programming and their concrete realization in programming languages. This is a hands-on course where students will be expected to complete programming assignments in multiple programming languages using a variety of language constructs and programming models, but students will also learn to compare and evaluate abstract language features, independent of their implementation in specific languages. Students should already be competent programmers in at least one modern language.


CS2420 and CS2810, each with a C- or better

Course fees

Computer lab access fee: $20, used to assist in maintaining computing infrastructure.


One section:

  1. TR 1:30–2:45 PM in Smith 108

    CRN: 41052

    Final exam Tuesday, December 8 at 1:00 PM


Instructor: Dr Russ Ross


Phone: 435-652-7971 (note: email preferred)

Office: North Burns 226

Office Hours: Weekdays 1:00–2:00 pm (via Zoom)

Course learning outcomes

At the successful conclusion of this course, students will be able to:

  1. Compare major programming paradigms and appraise the impact each has on how programming problems are solved.
  2. Differentiate between syntax and the underlying semantics that make up modern and historical languages.
  3. Compose and construct software solutions from a wide range of fundamental language constructs.
  4. Assess new languages as they emerge and determine their suitability for practical programming projects.



There is no text for this course. Readings will be assigned from online sources.

Computer Labs

You are required to bring a laptop to class every day with a charged, working battery. Any laptop is okay as long as it runs Windows 10, macOS, or Linux, and is connected to the university WiFi system. Chromebooks, iPads, and other tablets are NOT acceptable unless they run one of the three listed operating systems. You will be expected to complete work in class on a laptop that cannot be made up outside of class.

A limited number of laptops are available for students to check out for class in the event that your laptop is unavailable or you are unable to acquire a suitable machine. You should only rely on this option as a last resort.

You may use the computers in the Smith open computer lab. There will also be lab assistants in this lab.

You can also use your own personal computer for most of the assignments, though some may require a Linux environment. You are on your own setting it up if you choose to use your own machine.

Course Web Site

This course has an accompanying website. You are responsible for announcements, the schedule, and other resources posted on the website. Grades will be managed using Canvas.

Assignments and Exams


The student is responsible for reading the material in the textbook. A reading schedule is provided with the class schedule on the course website. The student is expected to read the material before the class in which it is discussed. The book also includes material beyond what we will discuss in lecture, which you are encouraged to study on your own. Feel free to bring questions from the reading to lectures or to office hours.


Assignments will be graded for accuracy of function and style of design. Programs that do not compile will receive no credit. It is important that you start early and get each of your assignments done before its due date. Many problems will take much longer to solve in a single sitting than in many shorter sessions. Give yourself time to think; sleep on difficult problems. Finish early so you can go back and refine your initial approach.

Final project

There will be a final project in place of a final exam. Each student will be assigned a programming language to evaluate and present to the class.


Assignments and projects each contribute to your point total. In total, the assignments comprise 85% of your grade, and the final project 15%.

Letter grades are assigned based on the percentage of possible points attained, according to the following chart:

Minimum Percentage Letter Grade
93 A
90 A-
87 B+
83 B
80 B-
77 C+
73 C
70 C-
67 D+
63 D
60 D-
0 F

Course Policies


All students attending class in person must wear a face covering that covers both mouth and nose for the entire class period and when working in the Smith Computing Center or visiting faculty offices. This is a state requirement, a university requirement, and a course requirement. Students who can not or will not wear a mask should stay off campus and attend class remotely. Any student attending class in person and refusing to wear a mask properly will receive a failing grade for the class and will not be permitted to continue.

If and when you attend class remotely and synchronously, you must turn on your video camera and give your full attention to the class just as you would in person. You may use an altered background image if you prefer for privacy.


Students are responsible for material covered and announcements made in class. School-related absences may be made up only if prior arrangements are made. The class schedule presented is approximate. The instructor reserves the right to modify the schedule according to class needs. Changes will be announced in class. Exams and quizzes cannot be made up unless arrangements are made prior to the scheduled time.

Occasional absences are acceptable as long as the student keeps up with assignment work. Students who miss more than two consecutive weeks of class or who miss more than 20% of scheduled classes during the semester without making prior arrangements will receive a failing grade. Students who miss any scheduled exam (including midterm exams and the final exam) or fail to complete a final project without making prior arrangements will receive a failing grade.

This course can only be completed by attending classes and completing all assigned work to a satisfactory level. There is no procedure for testing out of the class.


Electronics—including laptops—in class have been demonstrated to have a negative impact on student learning (see Shriram Krishnamurthi’s writeup for background This class has a NO DISTRACTIONS policy, with a few exceptions:

  1. When I ask you to use your laptop (or phone) for a specific activity in class. In this case you are permitted to use it for the duration of the activity, but but not during the rest of the class.
  2. If you need a laptop to accommodate a disability. If this is the case, please talk to me in advance and please visit the Disability Resource Center to document your need. To help other students in the class, please sit near one of the edges so your laptop does not distract other students more than necessary.

This policy extends to phones, tablets, and other electronic devices. I encourage you to pay full attention to class and take notes on paper.

Time Commitment

Courses should require about 45 hours of work per credit hour of class. This class will require about 135 hours of work on the part of the student to achieve a passing grade, which is approximately 9 hours per week. If you do not have the time to spend on this course, you should probably rethink your schedule.

Late Policy

Assignments are due on the date specified in the schedule. Handing them in or passing them off after the specified time is considered one day late. You may turn them in up to two school days late with penalties as described below. After two days late, you receive zero points.

For example: if an assignment is due at noon on Thursday:

Saturdays, Sundays, and school holidays do not count as late days. Late days do not extend beyond the last day of class.

Each student is given five free late days to use over the course of the semester. The lateness of an assignment will be determined according to the rules given above, and the first five late days used during the semester will be forgiven. After that, each late day will result in a 10% penalty.

Important notes:


Limited collaboration with other students in the course is permitted. Students may seek help learning concepts and developing programming skills from whatever sources they have available, and are encouraged to do so. Collaboration on assignments, however, must be confined to course instructors, lab assistants, and other students in the course. Students are free to discuss strategies for solving programming assignments with each other, but this must not extend to the level of programming code. Each student must code his/her own solution to each assignment. See the section on cheating.


Cheating will not be tolerated, and will result in a failing grade for the students involved as well as possible disciplinary action from the college. Cheating includes, but is not limited to, turning in homework assignments that are not the student’s own work. It is okay to seek help from others and from reference materials, but only if you learn the material. As a general rule, if you cannot delete your assignment, start over, and re-create it successfully without further help, then your homework is not considered your own work.

You are encouraged to work in groups while studying for tests, discussing class lectures, discussing algorithms for homework solutions, and helping each other identify errors in your homework solutions. If you are unsure if collaboration is appropriate, contact the instructor. Also, note exactly what you did. If your actions are determined to be inappropriate, the response will be much more favorable if you are honest and complete in your disclosure.

Where collaboration is permitted, each student must still create and type in his/her own solution. Any kind of copying and pasting is not okay. If you need help understanding concepts, get it from the instructor or fellow classmates, but never copy another’s code or written work, either electronically or visually. The line between collaborating and cheating is generally one of language: talking about solutions in English or other natural languages is usually okay, while discussions that take place in programming languages are usually not okay. It is a good idea to wait at least 30 minutes after any discussion to start your independent write-up. This will help you commit what you have learned to long-term memory as well as help to avoid crossing the line to cheating.

College Policies

Click on this link: https://calendar.dixie.edu/ for the official academic calendar, which has several important dates you should be aware of.

Click on this link: https://employees.dixie.edu/faculty-resources/required-elements-in-dsu-syllabi/ and scroll down to the section starting with “Important Links” for links to resources and policies that apply university wide.

Last Updated 08/24/2020