CSCE 314: Programming Languages
Instructor: Dr. Dylan Shell.
|Office hours||:||Friday 10am-11am and by appointment too.|
|Office hours||:||1:00-5:00 pm, Fridays|
|Mailbox||:||On HRBB 3rd floor|
There are several peer teachers available to provide help and guidance for this course. The assigned peer teachers will hold office hours during the week to help students. Peer teacher hours will be available on the Peer Teacher Website. The following include peer teachers for this course.
- Bailey Bauman
- Kevin Cang
- Andrew Hellinger
- Gregory Krupit
- Matthew Gaikema
- Carlo Jacob De Guzman
- Victoria Wei
- Dhananjay Khanna
- Nicholas Tallman
- Jason Zuang
These peer teachers will hold office hours in HRBB 129 during the week to help students. Peer teacher hours will be available on the Peer Teacher Website.
|Lecture Time (Section 500)||:||Mondays, Wednesdays and Fridays, 8:00am-8:50am|
|Lecture Time (Section 501)||:||Mondays, Wednesdays and Fridays, 9:10am-10:00am|
|Lecture Location||:||ETB 2005|
Brief catalog description: This course explores the design space of programming languages via an in-depth study of two programming languages, one functional (Haskell), one object-oriented (Java); it focuses on idiomatic uses of each language and on features characteristic for each language.
This course is about how programs written in high-level programming languages are executed. This includes topics such as parsing, internal program representations, type checking, and interpreting. Students will learn about implementation approaches of common abstraction mechanisms and modern programming language constructs. The course explores use of the functional programming approach to design and implement programs. And also, contrastingly, the main features of modern object-oriented languages.
Though we use and study two specific programming languages, Haskell and Java, learning more of these languages should be considered as a side benefit of the course, not the main goal.
Pre- and co-requisites
Junior or senior classification; CSCE 221.
Learning Outcomes / Course Objectives
- At the end of the course, students will be able to use modern programming languages more effectively.
- After competing the course, students will able to learn new programming languages more easily.
- They have a broad understanding of language constructs, common abstraction mechanisms, and efficiency considerations.
- Graham Hutton, Programming in Haskell, Cambridge University Press. (Second Edition)
The library only has the first edition available for use as an eBook currently. However, you can read the first two chapters of the second edition online here.
- Ken Arnold, James Gosling, and David Holmes, The Java Programming Language, 4th Ed., Addison-Wesley Professional.
The library has this edition available for use as an eBook.
Grades will be based on the following
The grading scale is:
The midterm will be held in class on the 8th of March, 2017. It will be a 50 minute exam, so arrive before the scheduled class start time to get started at 8:00am/9:10am sharp!
The final examination will be held in the reserved final slot. It will be comprehensive, but with an emphasis on material
after the midterm.
For both midterm and final exams students are permitted to bring in 5 physical pages with notes
(size: US letter, 8.5" x 11.0"; text is permitted on both sides).
|Previous midterm exam (Spring 2016) Solns to some questions|
(The honors section for this course will have an additional assignment that will account for 15% of their grade; the two exams will be scaled proportionately.)
Course Topics, Calendar of Activities, Major Assignment Dates
Syllabus topics and readings are subject to change, exact dates depend on class progress.
|Class setup||0||Abbott's Flatland|
If you've not read it, either read it (its freely available), or watch one of the film versions.
|Introducing Haskell||1||500 501 500-1 501-1||Hutton: Ch. 1|
|Haskell & Functional programming basics||2||500 501||Hutton: Ch. 2-3|
|Patterns, comprehensions, functions||3, 3b||500 501 500-1 501-1||Hutton: Ch. 4-6|
|Higher-order functions, Data types||4||500 501 500-1 501-1 500-2 501-2 500-3 501-3 500-4 501-4||Hutton: Ch. 7-8|
|Overview of language implementation||5||Goldbach C.R.T. 500 501|
|Functional parsers||6, 7||
Set Partition |
500-2 501-2 500-3 501-3 500-4 Parsing 500-5 501-5
|Hutton: Ch. 12,13|
|Modules, ADTs, Names, Syntatic analysis||8, 9||StackADT ListStackADT stackUser Tree treeUser||Hutton: Ch. 8, 15-16|
|— SPRING BREAK —|
|Monads and I/O||10||500 501||Hutton: Ch. 9-10,12|
|Type systems and type checking||11||hs cpp||AGH: 1-4|
|Java and OO Languages Basics||zip||AGH: 1-6|
|Java Generics||AGH: 11, 12, 18, 20|
|Co-contravariance, Wildcards, Reflection||AGH: 11, 12, etc.|
|Concurrency in Java||AGH: 14|
Homework will be posted incrementally during the semester. Some of
problems may involve material that is being covered or is to be covered, but
the majority will use material already discussed. Much of the in-class
discussion will build on material in the homework.
After sufficient time has elapsed to attempt the homework, some aspects and solutions will be discussed in class. Do not, however, expect an exhaustive enumeration of all solutions.
Examinations will be closely related to problems posted as homework. Since every student can prepare and use notes for the midterm and final examinations, obviously the questions will be based on the concepts needed in order to solve homework problems, but are not likely to resemble the homework questions directly.
|Mastery Supplement—Homework Six|
You can't learn programming techniques by watching.
Doing the homework is the most important part of this course.
It is the single biggest predictor of your success in learning the material.
Make time in your schedule every week for the class homework; mark that time off in your calendar and
protect that time.
The following are links that I've found useful. If you discover something that you find useful, let me know so I can add it:
- Grammars and Backus-Naur Form:
Submission of Work and Late Submission Policy
As there are no assignments that need to turned in to the instructors. It is your responsibility to ensure that you are keeping up to date with the material, following problems as done in class, and doing the homeworks to ensure that you have achieve mastery of the material.
The final letter grade assignments are final, unless there was a mistake made in recording your assignment or exam grades or in computing your final grade.
There are situations that may warrant regrading a particular assignment or exam. For example, making addition errors in computing your score, not seeing an answer that you gave, or misinterpreting an answer that you gave. Requests for regrading midterms must be made within one week of the work being handed back.
Unless otherwise announced, each homework and/or assignment in any fashion you choose. It is recommended that you balance collaboration with individual work. In general, you may find it helpful to limit discussion with your classmates to strategy and approach of solutions to problems. But actual solutions should be done by the student herself/himself to get the most out of the exercise.
As commonly defined, plagiarism consists of passing off as one's own the ideas, work, writings, etc., that
belong to another. In accordance with this definition, you are committing plagiarism if you copy the work
of another person and turn it in as your own, even if you have the permission of the person. Plagiarism
is one of the worst academic sins, for the plagiarist destroys the trust among colleagues without which
research cannot be safely communicated. If you have questions regarding plagiarism, please consult the
latest issue of the Texas A&M University Student Rules (http://student-rules.tamu.edu/rule52),
under the section "Academic Misconduct." For additional information please visit:
Students with Disabilities
The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires that all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. If you believe you have a disability requiring an accommodation, please contact Disability Services, currently located in the Disability Services building at the Student Services at White Creek complex on west campus or call 979-845-1637. For additional information, visit http://disability.tamu.edu.