Programming Languages

CSCI 230, Fall Semester, 2014

 

Instructor: Dr. Shieu-Hong Lin                     

Email:

Class: Tuesday & Thursday 12:00~1:15PM, LIB 141

Office Hours: Office Hours: MW 12:00-1:00pm, Math & CS department

Course Website:  csci.biola.edu/csci230

 

Course objectives

1.    Develop the foundational understanding of key concepts such as context-free grammars, regular expressions, lexical and syntax analysis, interpreters and compilers and their roles in the design and implementation of the modern programming languages.

2.    Cultivate the skills of problem solving, object-oriented programming, and basic software engineering using C++ through a semester-long programming project implementing an interpreter that can run programs for the very simple Biola programming language.

3.    Develop an in-depth understanding of key features of C++ in areas such as memory management, data types and type checking, inheritance and polymorphism, templates and generic programming to effectively utilize them in programming tasks.

4.    Cultivate the understanding of (i) scripting languages including Python and Java Script and (ii) markup languages such as HTML, XML, and their application in web programming by contrasting and relating the features between C++ and the new languages.

 

Books and References:

Grading Structure:

Reading & Participation                                               15%

Programming Assignments                                          40%

Language Study Assignments                                      15%

Quizzes and Exam                                                        30%

 

Programming Project: The main programming project is to implement an interpreter to run programs written in the very simple Biola programming language. You need to incrementally implement several modules and then integrate them together into an interpreter for the simple Biola language.

 

Language Study Assignments: We’ll assign a sequence of study assignments including (i) presentations regarding the textbook on web programming and (ii) investigation of key features in modern programming languages such as memory management, built-in data types, static typing or dynamic typing (type checking), control flow, subroutine call and parameter passing, and garbage collection, templates and generic programming, object-oriented programming (inheritance and sub-type polymorphism), functional programming, and so forth.

 

Late policy: You lose 15% (one point out of the 6-point scale) each day for being late in sending in your work. Unless it is something like a serious health issue with statements from the doctor as proof, you will receive no point after it is one week late.

 

Tentative Schedule

Weeks 1~2                  Language translation: Syntax and Semantics

Week 3                        Names, scoping, and binding

Week 4                        Memory management

Week 5                        Type checking

Week 6                        Function calls

Weeks 7~8                  Inheritance and polymorphism

Week 9                        Review and midterm

Weeks 10~12              Templates and generic programming

Weeks 13~14              Function programming and logic programming

Week 15                      Review

Students desiring accommodations on the basis of physical, learning, or psychological disability for this class are to contact Disability Services. Disability Services is located in the Learning Center in the Biola Library, upstairs from the main floor, and can be reached by calling 562.906.4542 or extension 4542.

 

 

ACADEMIC HONESTY POLICY: We are committed at Biola University to ethical practice in teaching, scholarship, and service.  As such, plagiarism and other forms of academic dishonesty will not be tolerated.  Please see the undergraduate/graduate student handbook and/or the departmental/program/school policy on academic honesty.  It is imperative that you present all written, oral, and/or performed work with a clear indication of the source of that work.  If it is completely your own, you are encouraged to present it as such, taking pleasure in ownership of your own created work.  However, it is also imperative that you give full credit to any and all others whose work you have included in your presentation via paraphrase, direct quotation, and/or performance, citing the name(s) or the author(s)/creator(s) and the source of the work with appropriate bibliographic information. To do otherwise is to put oneself in jeopardy obeing sanctioned for an act or acts of plagiarism that can carry serious consequences up to and including expulsion