CPSC 5135 Spring 2013 Undergraduate Syllabus
Programming Languages
Dr. David E. Woolbright
CCT, Room 439
(706) 507-8179
Required Texts
Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages
Bruce A. Tate
· 328 pages
· Published: 2010-10-27
· Release: P5.0 (2012-03-27)
· ISBN: 978-1-93435-659-3
· http://pragprog.com/book/btlang/seven-languages-in-seven-weeks
· Available in paper and ebook
· Paper version also available in the CSU bookstore
Book Blurb: In this book you’ll get a hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. Whether or not your favorite language is on that list, you’ll broaden your perspective of programming by examining these languages side-by-side. You’ll learn something new from each, and best of all, you’ll learn how to learn a language quickly.
· The Definitive ANTLR 4 Reference: Building Domain Specific Languages
· Terence Parr
· 325 pages (est)
· Published: 2013-02-15
· http://pragprog.com/book/tpantlr2/the-definitive-antlr-4-reference
· Release: B4.0 (2012-12-13)
· ISBN: 978-1-93435-699-9
These books can be purchased in the local bookstore or downloaded for a fee at http://www.pragprog.com/
Class Web Sites
- Desire2Learn
- http://csc.colstate.edu/woolbright (Click on CPSC 5135 Resources.) This is an older version of the course.
Outcomes
- You will be able to write non-trivial programs in five languages: Haskell, Racket, Prolog, Erlang, and Ruby.
- You will be able to define and discuss terms and concepts that are crucial to understanding the syntax and semantics of programming languages. These terms include finite automata, regular grammars, BNF notation, scanners, parsers, interpreters, and Domain Specific Languages.
- You will be able build small DSLs from scratch using ANTLR or other tools.
Strategies and Actions used to produce the outcomes
- Lectures and classroom discussions
- Programming assignments for individuals and teams
- ABET criteria covered: A, B, C, D, I, J, K
- Program objectives covered: 1,2,3
- Assessment methods: Written exams and programming assignments
Grading
Your grade will be determined from a combination of scores from tests, programming assignments and an interpreter building project for a small language. We will have a midterm exam and a final exam covering the material in the lectures, the ANTLR and Seven Languages textbooks, and the programming assignments. Weights for these items is included below:
MidTerm Test 20%
Final Exam 20%
Assignments 50%
Interpreter Project 10%
Grading for the course is on a 10 point scale (A : 100-90, …). As a rule, I do not give make-up tests, so if you need to miss a test, you should contact me before the test and explain why you must miss my test. I will work out an arrangement with you at that time. It is very inconvenient for you to miss a test unless it is an emergency.
You will not need a proctor for these timed tests which are taken open book, open notes.
Assignments
Access to all of the interpreters will be provided on a CS webserver. You can also download the compilers and work on your own machine. Descriptions of the assignments will be provided on my D2L course website. No matter where you develop the code, you will have to upload it to our webserver for grading. There will be two programming assignments for each language. Assignments for graduates and undergraduates are different.
Attendance
I expect you to attend the face to face class regularly, or participate regularly in the online class. I follow the university guidelines for attendance.
Policy on academic integrity: Students are encouraged to study together; however, each student must individually prepare his/her own submission. Cheating or plagiarism is not permitted and will be sanctioned according to the CSU policy on academic standards. You should carefully read the section on Academic Misconduct in the Student Handbook. Your continued enrollment in this course implies that you have read it, and that you subscribe to the principles stated therein.
Policy prohibiting sexual harassment: As your instructor, one of my responsibilities is to treat all students fairly and equally and to abide by the policies and procedures governing faculty/student relationships, including those concerning sexual harassment as stated in the Faculty Handbook.
ADA information
If you have a documented disability, as described by the Rehabilitation Act of 1973 (P.L. 933-112 Section 504) and the Americans with Disabilities Act (ADA) and subsequent amendments and would like to request academic and/or physical accommodations, please contact the Office of Disability Services in the Schuster Student Success Center (room 221), 706-507-8755, as soon as possible. Course requirements will not be waived, but reasonable accommodations may be provided as appropriate.
ABET Criteria:
An ability to apply knowledge of computing and mathematics appropriate to the discipline;
An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution;
An ability to design, implement and evaluate a computer-based system, process, component, or program to meet desired needs;
An ability to function effectively on teams to accomplish a common goal;
An understanding of professional, ethical, legal, security, and social issues and responsibilities;
An ability to communicate effectively with a range of audiences;
An ability to analyze the local and global impact of computing on individuals, organizations and society;
Recognition of the need for, and an ability to engage in, continuing professional development;
An ability to use current techniques, skills, and tools necessary for computing practice.
An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices;
An ability to apply design and development principles in the construction of software systems of varying complexity.
CS Program Objectives:
Our graduates will have achieved:
a broad general education assuring an adequate foundation in science and mathematics relevant to computing.
a solid understanding of concepts fundamental to the discipline of computer science.
good analytic, design, and implementation skills required to formulate and solve computing problems.
the ability to function and communicate effectively as ethically and social responsible computer science professionals.