(Last Mod: 08 May 2015 15:39:05 )
Evolution of the central concepts of programming languages, describing syntax and semantics, data types, abstract data types, control structures, subprograms, concurrency and exception handling.
Prerequisites: CS-2060, CS-2160, and either CS-3020 or CS-3060.
Concepts of Programming Languages, 10th Ed.
Robert W. Sebesta
ISBN: 979-0-13-139531-2
Pearson, 2012
For this class you will need access to Racket, Python, a C compiler, a C# compiler, and Prolog. Details will be provided as the need for each package comes up.
You may use any C compiler you wish. Your code, however, is expected to be ANSI-C compliant (C99 should be fine, although C89 is probably safer). As long as you stick to the standard header files and don't try to do anything with a GUI, you will probably be fine).
The Bloodshed website has a list of free compilers with links to where you can get them:
http://www.bloodshed.net/compilers/index.html
The Dev-Cpp (a.k.a., Dev-C++) compiler is a pretty simple compiler to use and has variants for most platforms. Many people prefer to stick with the tried and true GCC compiler. There is also the free Visual Studio Express IDE from Microsoft that will work with multiple languages, including C and C#. We will not be doing anything out of the normal, so find a compiler you like and go for it.
It is recommended that you install Python 3.3.3 from the above site, as this is the version that the instructor and grader will be using and your code must run successfully on the grader's platform.
Racket, previously known as Scheme, is a particular implementation of Lisp. The software can be downloaded from the official Racket website . While there is a lot of good information on this site, it can be a bit difficult to find things. So here are some links to pages within the site you might find particularly useful:
The Getting Started tutorial is not the best tutorial in the world, but it should get you moving. Similarly, the documentation can be difficult to follow because they seem to assume that everyone reading it already knows a great deal about the underlying workings of Racket. But this is not uncommon -- it seems that people that write documentation assume that the only people reading it will be people that already know all about it and who just need a reference for some fine details. The rest of us just have to struggle and glean whatever jewels of wisdom we can with the hope, usually justified, that the more we struggle the easier it will be for us to find the jewels we seek.
The course has the following grading groups:
Assignment Type | Each | Total | Weight |
BB Quizzes (10) | 15 | 150 | 15% |
In-class Quizzes (5) | 10 | 50 | 5% |
HW (10) | 25 | 250 | 25% |
Hour Exams (3) | 100 | 300 | 30% |
Final Exam (1) | 200 | 200 | 20% |
Instructor Discretion (1) | 50 | 50 | 5% |
TOTAL | 1000 | 100% |
Please note that this is a goal. Things may come up that will alter the final distribution of points. In general, each person's grade will be computed two or even three ways and the each person's raw score will be the highest among them. First, according to their percentage of the total points actually available; second, as a weighted percentage using the weights as above (if a category is removed entirely, the weights of the remaining categories will be adjusted to keep the relative weighting the same); and third, according to any new weights that might be announced.
Nearly every chapter will have a multiple-choice on-line quiz (on BlackBoard) that must be completed prior to class on the day it is due. Each quiz will focus on the reading material that the course is moving into. The primary purpose of the quizzes is very simple -- to encourage you to read the material prior to it being covered in class.
There will be five in-class ten minute quizzes. These quizzes will focus on material previously covered. These quizzes may or may not be announced, will normally be given at the start of class, and cannot be made up. There may be one or two additional in-class quizzes and, if so, any points earned in excess of the total amount allocated for in-class quizzes will be treated as extra credit.
The exams will be primarily multiple choice with one or two handwritten problems. The final exam will consist of 100 multiple choice questions drawing heavily from previous quizzes and exams but also covering any material not covered by previous exams.
Extra credit will be available, usually as part of an exam or possibly as an optional programming problem.
Assignments will either be intended for electronic submission or for manual submission. If electronic, they are due by Sunday at midnight. This includes any assignments given prior to holidays and breaks. Keep in mind that you may submit your assignment at any time prior to the deadline. If manual, they are due by the start of class on the due date.
In general, submissions will NOT be accepted late as this delays the ability to make solutions available or to get grading done in a timely manner. Exceptions will be made only by prior arrangement (with special case exceptions) for bonafide reasons and will generally have a 20% per day late penalty.Homework will only be accepted late by prior arrangement due to extenuating circumstances or for extreme unforeseen circumstances.
To be clear, circumstances that were known in advance and could be planned for will seldom constitute a bonafide reason for failing to submit an assignment on time. You are responsible adults on the verge of becoming practicing engineers. A key part of this is accepting the responsibility for good time management and the consequences for poor time management. If you choose to put off starting a project until just before it is due because you had three exams in two days or because you won't be back in town from a sports or interview trip until then, this is a choice you have every right to make -- but it IS a choice YOU made. Don't expect others to suffer due to poor planning on your part.
As a final note, don't push the submission deadline and put yourself in a position of having to submit in the last few minutes before the deadline expires. If the assignment is time-stamped by the Blackboard server as being 12:00AM or later, then it is late and will not be given credit. Keep in mind that the clock on the Blackboard server may not exactly match your watch, your computer's clock, or the official universal coordinated time maintained by NIST. Also, don't rely on the submission going perfectly smoothly. Give yourself a cushion and set your own personal deadline and treat that as though it were the official deadline. If you choose, for instance, 10pm then if it ends up getting done a half hour late you are just fine. Also, if you routinely plan to get it done and submitted the day before it is due, then if you run into an unexpected hurdle, you not only have time to deal with it, but you also have the opportunity to consult with your instructor and still be able to work on it and submit before the hard deadline.
First off, let's get past the notion that there is some ideal time for homework to be due. No matter what time is chosen, some fraction of students are going to find some reason to criticize it and some of those reasons are going to be reasonable, at least on the surface. However, nearly all of these criticisms implicitly assume that students will not be submitting until the actual deadline and ignoring the fact that students can submit at whatever time they choose, as long as it is before the deadline. Having said that, it is an inescapable fact that students have multiple demands on their time and that the adage about the squeaky wheel getting the grease is the rule rather than the exception. With this in mind, the deadline for anything that is due and that is to be submitted electronically will be midnight on Sunday.
In the unlikely, but possible, event that something is to be submitted in hardcopy form, submissions will be accepted at the beginning of class on the due date. Note that this does NOT mean that you can print out your files that were due electronically that morning and turn them in when you come to class. This only applies if the specified method of submission is hardcopy.
Why midnight on Sunday? The answer to this lies in why certain other obvious times were NOT chosen. If any time during the school day, say 8AM, noon, the beginning of class, the end of class, or 10PM, were chosen then students that procrastinated would be tempted to skip class (either this one or some other course) in order to finish the assignment and get it submitted -- this is fair neither to the student nor to the instructors whose classes are skipped.
The choice of Sunday was primarily to give students that work full-time during the week the opportunity to do their work over the weekend if they are unable to work on it during the week. It's recognized that this may encourage students, whether they work or not, to not start their work until the weekend. That is, of course, each student's prerogative.