Purpose • The main purpose of this course is to encourage students (whether you are in or not in computer science major) grab fundamental concepts of programming languages and apply their language tools confidently in either self-­‐study or routine works. • To give students confidence of big picture of programming languages, so that when they encounter new problems or new tools, they are able to handle them appropriately. • Introduce traditional way of thinking driving the evolution of programming languages. • Stimulate students’ interest in researching and learning new method, new tools, or new way of applying existing rules, in terms of programming languages. • Prepare students for knowing both advantage and disadvantage of current programming languages. • Help student learn several language tools such as python, for solving problems. • Through concrete examples, let students know how to debug and how to enhance performance of program. • Through concrete examples, let students learn how to formulate a problem and solve it using concepts like data structures, algorithms, computational statements. Note: what you will be learning during this course, in terms of programming languages, include Verilog, MIPS, Fortran, Perl, C, Smalltalk, Java, C++, Haskell, Standard ML, Python, JavaScript, etc. Prerequisites No programming background or not in CS major? It’s OK that you have not learnt any programming language. Fundamentally, CSE250 Data Structure is a prerequisite course you should have taken. Textbook “Concepts of Programming Languages” (10th ed.) by Robert W. Sebesta. Addison-­‐ Wesley, ISBN-­‐13: 978-­‐0131395312 If you can not find or buy such an edition, then using a similar edition is OK. You can borrow the book from Silverman library, and there are 4th and 8th editions there. “Computer Organization and Design” (3th ed.) by David A. Patterson, John L. Hennessy. All other materials will be posted along with lectures. Technical Requirements Since the course will apply some knowledge in particular programming language, it is beneficial if student pay a little attention to Assembly, C and Python language. Since all assignments will be tested on UNIX compatible platform, it would be better if student get familiar with UNIX compatible operating system like linux, MacOSX, etc. Most lectures will include programming demonstrations, and the code involved will be posted online and it is good for students to try them and understand them after the lectures. Grading Policies and Weightage There will be 7 assignments and two exams during the summer session. The assignments are all programming tasks and each program should be emailed to instructor using UNIX compatible compressed format like .tar.gz or .zip. 1. Each assignment accounts for 10points. You will be having 10points if you finish the last assignment and do the extra work in requirement. 2. Midterm Exam: 15points. In Class. Date(TBD) 3. Final Exam: 15points. In Class. Date(TBD) Note: Late assignment will be taken 10% of the points for each day(in the sense, if the assignment is late for 5days, the student will get 5points at most for the assignment). Academic integrity must be followed. Any contribution of others must be cited, and if there is any violation, a F grade will be posted on the course. Please read the policy page of CSE department: http://www.cse.buffalo.edu/undergrad/policy_academic.php Content The content of the lecture is based on Sebesta’s textbook, including: Evolution of the Major Programming Languages, Syntax and Semantics Names, Bindings, Type Checking, and Scopes, Data Types, Expressions and the Assignment Statement, Statement-­‐Level Control Structures , Implementing Subprograms, Abstract Data Types, Object-­‐Oriented Programming, Concurrency, Exception Handling, Functional Programming Languages, Logic Programming Languages. We will be adjusting the sequence of the contents according to the procedure of lectures. Contact Information Instructor: Zhi Yang Time: May 20, 2013 -­‐ Aug 9, 2013 Days/Time:TR, 1000 -­‐ 1205 Room: TBD Email: zhiyang AT buffalo.edu Office: 106 Davis Hall Telephone: 716-­‐645-­‐1580 Acknowledgment We would like to thank Dr. Bharat Jayaraman, Dr. Carl Alphonce, Dr. Robert Platt Jr. for their help and instructions during the preparation for this class. We would like to thank all related staffs in CSE department for their effort and kindness in planning and scheduling of the course.