Final Exam: December 19, 2019, 10:30 -- 12:30,
(location to be decided)
Online discussion using Piazza
Required Text and Other References
The required text is Programming Languages: Concepts and Constructs
(Second Edition), Ravi Sethi, ISBN 0-201-59065-4.
We will be reading a few research/expository papers during the term. These will be made available via the password protected papers and handouts page. Occasionally, when I cannot get an electronic copy of a paper, I will distribute xerox copies in class.
Textbooks are expensive and sometimes unnecessarily so. Before buying a book, I encourage you to search a little on the web to see if you can find it at discounted prices somewhere. If you have done the search and have found some other good place to get the text book from, do think of helping your colleagues. You can post information about any legal means of obtaining the book to the folder in the Piazza page that has been set up for social interactions, for example.
Course Description and Objectives
This course provides an introduction to the
area of programming languages. The focus will be on conceptual
issues. Aspects relating to the structure, usability and
implementation of a variety of programming languages and paradigms
will be studied. Case studies from existing programming languages such
as Pascal, C, C++, Java, ML, Scheme, Haskell and Prolog will be used
to motivate and ground discussions at various points. Some programming in each of these
languages will be needed in order to clearly understand the issues
that we will study. However, the eventual purpose of the course is
not to learn to program in a variety of different
languages. Rather, the objective is to obtain a general understanding
of the idea of a programming language; such an understanding might be
useful at a later stage in quickly assimilating information about any
new language that is encountered and in making judgements about its
implementability and usefulness for specific programming tasks. Also,
while you will not necessarily be ready at the end of this course
to design or implement new programming languages, you should be
adequately prepared for advanced courses that address these aspects.
The text is a little superficial in its coverage of some important topics and so we will supplement it through lecture material and research papers. Also, going the other way, the syllabus indicated above is a little ambitious and time constraints may not permit us to cover all the topics in the mentioned parts of the text; in past offerings, discussions of object-oriented programming and concurrency have been casualities of time pressures.
You will be responsible for having read and understood all the material in the parts of the text described earlier. I will in addition make papers that supplement class discussions available to you periodically. You will be responsible for reading all of these materials even if they are touched only briefly or not at all in the lectures; if you have questions about them, raise them in class or via the discussion forums, the latter perhaps being the better way to get a careful discussion started on the topic.
Lectures will often cover material not directly available from the book or in the assigned papers. You will be responsible for this material as well. Attending lectures and keeping abreast of discussions is therefore very important. Students who have skipped lectures have had difficulty with the course in the past. Be warned about this and note that there will be no reprieve after the fact.
Half the grade for the course will be determined by homework assignments and the other half by exams. An aggregate will be calculated based on these aspects of your work and then a curve will be plotted and used to translate the aggregate into a letter grade. Note that while the reading assignments and class participation do not contribute directly to the grade, they will still have an important impact: whether or not you do the reading assignments will show up in the quality of your responses to questions in the homeworks and exams and I will take class participation into account in determining borderline issues when translating an aggregate into a letter grade.
Assignments will be given roughly every other week. These must be completed and turned in before the start of class on the due date. Every homework will have a hard copy component. When we expect you to write programs for the homework, we will also need you to provide us an electronic version of the programs via a suitable canvas or github interface that will be set up. While we expect timely submissions, situations sometimes arise that prevent us from meeting deadlines. To accommodate for this, we will give each student a cumulative grace period of 5 days for all the homeworks. Note that the available grace time may be sharpened for any given homework if we have to provide solution sketches or we have to return graded homeworks early, as we might have to do just before exams. Note also that once this time has been exhausted, you will not get credit for any further late homework. For this reason, be very judicious about how you use the grace period. The weightage for each homework will be determined towards the end of the term, depending on the relative difficulty of each. While each homework will contribute a specific amount to the final grade, you are expected to turn in all of them and exhibit reasonable effort (read: at least a 50% score) on each to obtain a passing grade in the course. Note that this requirement holds even if you have exhausted the grace period and will not be getting credit for the homework.
There will be two exams, a mid-term and a final. These will account respectively for 20% and 30% of the overall grade. The mid-term exam is scheduled for October 22, 2019 during class time and the final exam will take place on December 19, 2019 10:30 - 12:30 hours. The exams will be open book; the text can be used but no other material or notes will be permitted.
Note that the exam dates are firm: No changes or makeup exams will be considered except in the case of serious and documented illness. Also note that if, for any reason, a makeup exam will have to be considered, it will be an oral exam.
Issues such as presentation elegance, clarity and conciseness of expression and the insights offered are essential aspects of submitted work, not just optional ones. As such, these will be taken into account in grading. The Web page for homeworks discusses these points in more detail and also explains matters of protocol.
A word about collaboration and outside help. Insofar as this serves to improve your understanding of the course material, it is actually encouraged. However, you are expected to do all the work that counts towards your grade completely independently. Note that if you have consulted outside sources, such as resources available over the web, in developing your solution, you need to provide this information clearly in the work you turn in. Not doing so counts as plagiarism, one of the worst forms of cheating in the academic context. Once you have provided the sources used, we can look them up and determine how much this should impact on your grade. Note also that there are lots of simple yet effective ways to check if you have used such sources, so it can be dangerous not to acknowledge such help upfront.
This course will expect most of you to learn new things. In particular, you will encounter new languages and new ways of thinking about programs. Moreover, the focus will be on things that have a long term impact on your understanding. For example, we will not really be discussing how to program in Java, C++ or some other language but, rather, how to think about programs and the devices available in these and other languages. You may feel diffident at times doing this---all of us have an initial desire to stay with familiar things---but it can be very rewarding in the end. Also, know that the TA and the instructor are quite passionate about the subject and are more than willing to give you assistance. However, such assistance can be useful only if you have made the initial efforts to understand and if you keep a positive attitude towards learning despite the obstacles you may have encountered along the way.
At the outset, you are strongly encouraged to discuss material in the
course with others in the class. Using the discussion forums is a great way
to do this. Discussions of this sort benefit everyone: they can clear
up bottlenecks in understanding and explaining things to others also
sharpens your own understanding.
This being said, any work that you turn in for a grade is expected to be representative of your independent thinking. You may discuss assignments with each other to the extent that this clarifies your understanding of what is being asked, but this discussion must stop before it gets anywhere near the details of a solution. If you need help at this point, you should seek this from the instructor or the teaching assistant who are in a better position to decide what is and is not appropriate. In a similar vein, it is not acceptable to simply reproduce solutions to problems that you obtain from someone outside of class.
There will be penalties for breaches of this policy, ranging from no credit for the work in question to a failing grade in the course. To ensure fairness and in keeping with University policy, suspected breaches of the policy will be reported to the Office of Community Standards. On a more personal note, this kind of dishonesty interferes seriously with your own ability to learn and so there is no benefit to it in the long run.
One final comment on a related point. For those of you who seem to be understanding the material in the course well and are enthused by this, I would like to encourage your being helpful to others. However, please be aware that there is a point beyond which such help is in breach of the academic honesty policy and can invoke all the described sanctions. More personally, note that such help can be detrimental to someone else's learning. One particular situation to be aware of is when you respond to queries on the discussion fora. Give thought to whether or not you will be letting out solutions to problems that your colleagues should have a chance to think through for themselves. The instructional staff will try to monitor this aspect towards guiding you in deciding when responses and help you provide has the danger of crossing the boundary of legitimacy, but we will need you to be cooperative and responsible as well.
Note: The department has a default set of policies regarding academic conduct that you will find here. These policies are effective for anything that is not explicitly covered above.
The Disability Resource Center
The University of Minnesota is committed to providing all students
equal access to learning
opportunities. The Disability
(DRC) is the campus office that works with students who have
disabilities to provide and/or arrange reasonable accommodations.
If you feel this information is relevant to you please don't hesitate to follow up; it must be our joint goal to get the best out of every one and having the right environment to perform is important towards this end.
Mental Health Resources
As a student you may experience a range of issues that can cause
barriers to learning, such as strained relationships, increased
anxiety, alcohol/drug problems, feeling down, difficulty concentrating
and/or lack of motivation. These mental health concerns or stressful
events may lead to diminished academic performance or reduce your
ability to participate in daily activities. University of Minnesota
services are available to assist you with addressing these and other
concerns you may be experiencing. You can learn more about the broad
range of confidential mental health services available on campus from
the Student Mental
Last modified: Sept 19, 2019. Page maintained by ngopalan atsign umn dot edu.