Syllabus

Overview

This course examines the syntax and semantics of programming languages. Topics include: history and fundamentals of programing languages, formal specifications of syntax and semantics; the implementation and execution of programs; and object-oriented, functional, and logic programming. Programming assignments and projects will provide experience in a number of languages. Prerequisites: You must have completed CMSC 202 and CMSC 203 with a grade of C or better.

Objectives

The key learning objectives for this course are:

Required Textbook

Concepts of Programming Languages, latest edition (11th ed.), Robert W. Sebesta. Available new and used from the UMBC Bookstore and Amazon (can also be rented at a reasonable price). The tenth edition is still available, and is acceptable.

 

Class participation

Education works better when we're all actively engaged in it. It's more effective and more interesting when there are questions, comments, challenges, and occasional rants. These can take place in class but also on line via the Piazza discussion forum for the class.

Exams and quizzes

We will have a mid-term examination in class and a comprehensive final examination. There may be several online quizzes and surveys.

Homeworks and Projects

There will be roughly one homework assignment every other week (see the syllabus for details). One or more of the homeworks may involve reading articles or papers and writing short essays.

Expectations

Unless otherwise specified, all assignments are to be turned in by 11:59pm on the day they are due (which is given in the schedule). It is your responsibility to contact the instructor or TA in advance if this will not be possible. There will be a penalty for every day an assignment is late. Students are expected to adhere to all university policies regarding student conduct, academic and otherwise, as posted on the University web site and in the Student Handbook. Academic dishonesty of any kind will be handled in accordance with University policy.

"By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community, in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. To read the full Student Academic Conduct Policy, consult the UMBC Student Handbook, the Faculty Handbook, or the UMBC Policies section of the UMBC Directory."
[Statement adopted by UMBC's Undergraduate Council and Provost's Office.]

Regular class attendance is expected.

Grading Policy

Semester grades will be based on the following components. The percentages are initial estimates and subject to change to reflect the actual number and complexity of the quizzes, homework assignments and projects.

Assignments

We will have approximately 6 to 10 homework assignments. Doing these is critical to learning the material. Consequently, your performance on the homework assignments will count towards about 45% of your grade. Homework assigments will have a strict due date and penalties will be applied for late homeworks according to the following scale: So, if an assignment is marked as being due by April 1, it must be submitted by 4/1@11:59pm to get full credit. If you were to submit it on 4/2@12:01am, it would incur a 10% penalty, and if on 4/3@12:01am (i.e, 1 day and 2 minutes late), a 20% penalty.

You will submit most of your assignments online. Network and computer failures at UMBC are a fact of life. They are out of your control and out of our control. However, they are not an excuse for a homework or project to be submitted late, nor are they a reason for deadlines to be extended, even if the outage occurs on the due date. Plan accordingly. Waiting to submit your assignment until 5 minutes before it is due is a recipe for disaster. In the event of network outages or computer failures, you are still responsible for submitting your assignments on time. There are labs on campus even if your home internet or ResNet connection is down. Also, it is your responsibility to take care of any problems with your account, such as quota overages, which interfere with your ability to complete and submit projects for the course. Project extensions will not be given for such problems.

Lectures and Readings

You are expected to attend all lectures for this course. Although all sections will cover the same general topics, you are responsible for the specifics given during your section.

You are responsible for all material covered in class, even if not found in the on-line class presentation materials. If you should happen to miss a class, you are responsible for getting any missed notes or announcements from a classmate.

You are required to prepare for each class by having read all of the assigned materials beforehand. Even though it sounds childish, the professor is not above giving a pop quiz if he has started to feel depressed about the level of preparedness among the students.

Schedule

The online schedule includes lecture topics/notes, reading assignments, midterm and final exam dates, and homework and project due dates. Except for the final exam date, the remainder of the timeline should be considered somewhat fluid in order to allow us to adapt to any unanticipated events. The specific dates will become much more firm as we get closer to the relevant time period.

Course BlackBoard, and Piazza

In addition to the course web pages, which will be the primary channel for disseminating information and course materials, Blackboard is available for all CMSC 331 students in all sections. Blackboard will be used to post student lab grades. We will be using the Piazza system to support course discussion forums. Discussion forums will be created for general questions about course material, C++, and for general questions about programming and tools. A discussion forum will also be created for each project in this course.

N.B.: Postings on the Piazza discussion forums are to be limited to specific technical and logistical discussions about the coursework; you may use your own Facebook page or other personal resource, to gripe about how unfair the workload is, discuss the personal habits of fellow students or the instructors, etc.; we will monitor the Piazza forums to keep the signal-to-noise ratio at an acceptably high level.

If you have difficulty accessing the CMSC 331 Blackboard site or your Piazza account, e-mail your instructor.

Academic integrity

Here is some guidance on what we expect from you. Some of this was adopted from David Matuszek's policies at UPenn.

You may:

You may not:

  • Work together on the same program.
    • We emphasize this one because this is where we always hear, "but I didn't understand."
    • Talking about the program is fine, but when it comes to writing the program, do it by yourself.
    • Writing programs jointly is unacceptable. You will very probably be caught and that will be grounds for failing the course.
    • If you write a program jointly and try to hide the fact by making cosmetic changes, this will be regarded as further evidence that you know the rules and are being deliberately dishonest.
    • Working together may be acceptable in your home culture, and it is usually encouraged in business; however, working together is not acceptable in this educational system.
    • If you discuss your assignment extensively with another student, and make reasonably detailed plans about how you will do it, and then go off and each write each program separately, you will be surprised at how different they turn out. We have never had a problem with programs that were "accidentally" the same.
  • Copy another’s code.
    • If you copy someone else's program -- even just a part of it -- that fact will be noticed.
  • Allow your code to be copied.
    • Fair or not, this is the rule. If you and someone else turn in the same program, both of you are guilty, regardless of who did the actual work.
  • Lend your code to someone else.
    • There is no good reason to do this, and if they copy your program, you are at fault.
  • Leave your code lying around where someone else may copy it.
    • Please be careful with your disks, flash drives and your program listings. Please.
    • If you lose a disk, just tell us. Tell us right away. So long as we know about it before we discover that someone else has turned in the same program, you won't be in any trouble.
  • Use any code from textbooks or the Web without our permission.
    • Let's be clear. There is no problem with looking up how to do something, and copying two or three lines to, say, open a file, or create a Frame. Even an entire method of, say, ten lines, should be OK -- particularly if it's a general-purpose thing that might be used in a lot of different programs.
    • Finding code that does a significant part of your assignment, and using it, particularly if you use it without attribution, is a violation.
    • For the most part, it should be pretty obvious what is assignment-specific and what is general-purpose. If in doubt, ask me.
  • Have someone else write your program for you.
    • This one is pretty obvious.
    If you think you may have accidentally broken a rule, come and talk to us about it. You will be much better off than if we discover it ourselves.

    Students who violate this academic integrity policy will at least receive a grade of 0 for that assignment, but might face a harsher penalty depending on how egregious the violation was. A second violation will also result in a reduction of one full letter grade in the student's final course grade.

    In the case where one student copies the program of another student, both students are considered to have violated this policy. Here, copying includes not just programs that are verbatim copies, but also programs that are substantially similar and could not have been produced independently. Furthermore, all parties concerned will have their prior homework and programs checked. Violations of this policy may be reported to the University's Academic Conduct Committee for further action. Egregious cases of cheating will be written up as a "more serious" infraction. In this case, you will not be allowed to drop the course. Also, a "more serious" infraction would appear as a permanent part of your student record and would be seen by potential employers when they ask for an official copy of your transcript.

    The UMBC Undergraduate Student Academic Conduct Policy is available at: http://www.umbc.edu/undergrad_ed/ai/documents/ACC2011.pdf