CS 320 Programming Languages Fall 2014 Credits: 3 units Contact Hours: Tuesday/Thursday 1100-1215 Instructor: Patty Kraft Office: GMCS 544 Email: pkraft@mail.sdsu.edu Office Hours Days: M/T/W/TH Office Hours: 1230 – 1345 (M/T/W/TH), 0930-1030 T, and by appointment Course Materials 1. Required text: Concepts of Programming Languages, 9th Edition, by Robert Sebesta. Addison-Wesley Press. ISBN 9780136073475.. Course Information for CS 320 Description from the Official Course Catalog Programming Language History, Syntax and Semantics, Lexical Analysis, Syntax Analysis, Names, Bindings, Scopes, Data Types, Control Constructs, Function Invocation, Recursion, Functional Programming, and details of specific programming languages. Prerequisites: CS108 is a sufficient prerequisite; if you have already (or are concurrently) taking CS 237 (Assembly Language), you will find that this will deepen your understanding. Course Type: Upper division required course Specific Goals for CS 320 Course-Level Student Learning Outcomes The objectives of CS 320 (Programming Languages) are for students to: 1. Learn to recognize distinguishing programming language features. 2. Understand the importance of language design in program development. 3. Understand the process of breaking down source code into lexemes, tokens, and parse trees. 4. Understand and use basic UNIX commands, compilers, and file structure. 5. Be able to apply scoping rules to variables, functions, modules, and namespaces. 6. Understand object-oriented methodologies by use of public, private, protected, and friend constructs. 7. Understand the concept of functional programming list processing through application of basic methods. 8. Be able to code a program in a previously unused programming language by studying examples and researching language constructs as needed. Relationship to CS Program Course Outcomes CS 320 addresses the following CS Program course outcomes: a) An ability to apply knowledge of computing and mathematics appropriate to the program’s student outcomes and to the discipline b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs d) Recognition of the need for and an ability to engage in continuing professional development e) An ability to use current techniques, skills, and tools necessary for computing practice. Topics Covered The following topics are covered in CS 320: 1. Overview of programming language properties, categories, and history. 2. Introduction to UNIX, text editors, compiling, and running programs on the UNIX operating system. 3. Language syntax, semantics, syntactical analysis, and lexical analysis. 4. Naming, binding, and scope of variables. 5. Data types, arrays, and structures. 6. Function and module structure and invocation. 7. C programming language: input/output, static and dynamic allocation, pointers, arrays, structures; debugging, compiling, and executing a program. 8. FORTRAN programming language: input/output, static and dynamic allocation, subprograms, syntax, control structures, recursion; compiling, and executing a program. 9. Expressions and assignment statements. 10. Object-oriented objectives and properties: abstraction, encapsulation, polymorphism, and inheritance. 11. C++ programming language: input/output, classes, objects, structures, arrays of objects. 12. Functional languages composition and LISP programming language. Special Assistance Special Assistance: If you are a student with a disability and believe you will need accommodations for this class, it is your responsibility to contact Student Disability Services at (619) 594-6473. To avoid any delay in the receipt of your accommodations, you should contact Student Disability Services as soon as possible. Please note that accommodations are not retroactive, and that accommodations based upon disability cannot be provided until you have presented your instructor with an accommodation letter from Student Disability Services. Your cooperation is appreciated. Course Structure and Conduct Style of the Course: lecture, individual homework, and individual programming assignments Technology Utilized in the Course: Blackboard, various IDEs, SDSU server rohan class accounts and development environment, SSH connection utilities Programming Assignments and Exams Programming assignments: There will be 7-8 programming assignments and 3-4 homework assignments throughout the semester. Programming work is to be done on an individual basis. All programming assignments will be submitted online and a matching hard copy submitted in class. You are required to follow certain coding guidelines which will be outlined in class and on assignments. Assignments turned in after the posted due date and time will be counted late and assessed a late penalty. Exams: There will be one midterm exam and a final exam. Make-up exams are not given. Unless a compelling reason exists (to be determined by me), failure to appear for an exam at the indicated date and time will result in a zero score. If you know in advance that you will miss an exam, see me about it in advance. Refer to http://arweb.sdsu.edu/es/registrar/finalexams/14_fall.html and note now that the date of our final exam is Tuesday, December 16, 2014, from 10:30am-12:30pm; don't make plans that conflict with the final. Note in particular that the university policy prohibits taking the final early. Course Assessment and Grading Assignments will comprise 40% of your grade, the midterm will be 25% of your grade, and the final will be worth 35% of your grade. Excused Absence Make-up Policies: Unless a compelling reason exists (“compelling” will be determined by me), failure to appear for an exam at the indicated date and time will result in a zero score. Other Course Policies 1. 2. Adding/Dropping Procedures: Students that do not show up the first week of class will be dropped at the end of the first week. Students will be allowed to add the course based on space available, provided they have attended all lectures from the first week of class. Last day for students to add or drop class: 9/8/2014. Cheating/Plagiarism: You are free to discuss ideas and strategies for approaching problems with others, but each student must complete his/her own work. Cheating and plagiarism WILL NOT BE TOLERATED. If a student is found cheating or plagiarizing material written by someone else (including information posted on websites), that student will fail this course and should expect to face disciplinary proceedings. 3. Extra Credit Policy: If you are having problems with the assignments or tests, contact the instructor as soon as possible. It will NOT be possible to earn extra credit to improve a poor grade at the end of the semester. There may be opportunities for extra credit during the semester that are related to additional programming assignments. 4. Classroom Focus: If you MUST bring a cell phone or pager to class, set it to the vibrate mode and step out of the room to take any necessary calls. PLEASE limit this to emergency/critical situations only. Course Calendar Approximate Due Dates for Major Assignments and Exams Week Date 1 26-Aug Course Introduction. Chapter 1 & 2 Sebesta 28-Aug Overview of Programming Languages topics. Sections 1 - 6 "Beej" online 2-Sep Syntax & Semantics / Unix Chapter 3 Sebesta 4-Sep Syntax & Semantics Sections 7 - 10 "Beej" online Homework 1 due Lab 0 due 2 3 4 5 6 Topic Reading 9-Sep Lexical & Syntax analysis / C language Chapter 4 Sebesta Lexical & Syntax analysis /C language Sections 10 - 12"Beej" online 16-Sep C language, file i/o, argc/argv Sections 13 - 15"Beej" online Lab 1 due 9/15 11:59pm 18-Sep C language Stanford Lexical Analysis PDF Quiz 2 23-Sep C language, gdb, addressing 25-Sep C language: pointers, arrays, arithmetic, dyanamic allocation Read Fortran tutorial Lab 2 due 9/25 SOC 30-Sep Names, binding, scope FORTRAN FORTRAN Chapter 5 Sebesta Read class notes Write skeleton Fortran program FORTRAN Data types Expressions & Assignments Statements FORTRAN Chapters 6 & 7 Sebesta Scope in Fortran Arrays in Fortran 7 7-Oct 8 14-Oct FORTRAN 16-Oct Midterm exam C++ Tutorial 21-Oct C++ Language C++ Classes 23-Oct C++ Language Intro to OOP 28-Oct C++ Language Using a makefile Program 5 30-Oct C++ Language Format output Abstract Data Types & Encapsulation C++ Language Chapters 11 & 12 Sebesta 9-Oct 10 11 Quiz 1 (Introduction) 11-Sep 2-Oct 9 Assignment 4-Nov Homework 2 due Lab 3 due Lab 4 due Lab 5 due 6-Nov 12 13 14 15 16 17 Polymorphism Homework 3 due 11-Nov Object-Oriented Programming C++ Language No class: Veterans Day 13-Nov C++ Language Inheritance Lab 5 due 18-Nov Subprograms / C++ Language Chapter 9 Sebesta OperatorOverloading.pdf 20-Nov Schedule slip day / Scripting Language 25-Nov Functional languages 27-Nov No class: Thanksgiving Day Chapter 15 Sebesta Lab 6 due Homework 4 due 2-Dec Functional language Scheme1 4-Dec Functional language Scheme exercises 9-Dec Functional language 11-Dec Functional language 16-Dec Final exam 1030am – 12:30pm Lab 7 due