Programming Languages

CSCI 230, Fall semester, 2016

 

To the Bottom of the Page

 

Instructor: Dr. Shieu-Hong Lin          Time: Tue/Thurs. 12:00~1:15 Location: LIB 141

 

Office Hours:

M~Th 8:30am~10:30am, MW 11:30~1:00pm Math & CS department at Grove 8

Contact Dr. Lin to set up an appointment in advance

 

Grading TAs: Garrett Stevenson and David Ramos

 

TAs for TA hours: Alvin Suh, William Tan

TA hours: T Th 1:00~4:00pm

 
Syllabus: compact version.

 

Textbooks (required)

 

References

 

 

Links to useful online references

 

*************************************************************************************************

Submission of all your work: go to Biola Canvas

Your grades: see them under Biola Canvas

 

Late policy:

       The submission link remains open for 2 more days after the due date as a grace period, but 1 point will be deducted for late submission after the due date while the submission link is still open.

       You will receive no points after the submission link on canvas is closed unless it is something like a serious health issue with statements from the doctor as proof.

*************************************************************************************************

 

Week 1: Introduction to programming languages

 

Reading #1 (Basic Types in C++) due: Thursday Sept. 1

 

 

Lab #0: Due: Thursday Sept. 1

 

 

*************************************************************************************************

 

Week 2: Strings, Vectors, and Arrays in C++ | Intro to Programming the WWW

 

Reading #2 Due: Thursday Sept. 8

 

Lab #1 Due: Thursday Sept. 8

 

 

 

*************************************************************************************************

 

Week 3: Expressions and Operators | Basics of HTML

 

Reading #3 (HTML / Expressions and Operators in C++) Due: Thursday Sept. 15

 

 

Programming #1: Due: Thursday Sept. 15

 

 

A hackathon event as an example of web programming: see here.

 

*************************************************************************************************

 

Week 4: Compilers, Interpreters, and Lexical Analysis | More on the Basics of HTML

 

 

Reading #4 (More on the basics of HTML / ) Due Thursday Sept. 22

 

Homework #1: (i) binding of memory to variables and (ii) memory storage management: Due Thursday Sept. 22

 

 

Lab #2 (A warm-up exercise for Programming #2): Due: Thursday Sept. 22

 

 

*************************************************************************************************

 

Week 5: Functions in C++ | Basics of CSS

 

Reading #5

 

 

*************************************************************************************************

Warm-up exercise: Think about the code in this C++ project and its outputs.

 

Test 1 Thursday Sept. 29: Open-book test on C++ Primer (Reading#1~#4), especially the basics of

Chapter 2:

(i)             type conversions and literals of types,

(ii)           scope,

(iii)         references and pointers as compound types,

(iv)          the const quantifier,

(v)           type aliases + auto and decltype as type specifiers

Chapter 3:

(vi)          range for and its use in strings, vectors, and arrays (pp. 91~93),

Chapter 4:

(vii)        lvalue vs rvalue (p. 135)

(viii)      short-circuit evaluation of logic expressions (p.142)

(ix)          sizeof operator, assignment operator

(x)            implicit type conversions

(xi)          explicit casts and the hazards

Chapter 5:

(xii)        variable definitions inside the body of a switch statement (p.182)

(xiii)      range for (Subsection 5.4.3)

 

 

 

*************************************************************************************************

 

Week 6: Basics of Classes in C++ (I) | Overview of Java

 

Reading #6 (Basics of Classes in C++): due: Thursday Oct. 6

 

 

Programming #2 (The lexical scanner module) Due Thursday Oct. 6

 

 

Note: See the server-side PHP script for Test 2.

 

 

*************************************************************************************************

 

Week 7: Basics of Classes in C++ (II)| Basics of Javascript

 

Reading #7: due: Thursday Oct. 13

Homework #2 (Preparation for Programming #3): infix-to-postfix conversion and postfix evaluation. Due Thursday Oct. 13 (open till Thursday Oct. 27, no late penalty)

 

Lab #3 (Preparation for Programming #3):

C++ maps as associative arrays: Due Thursday Oct. 13 (open till Thursday Oct. 27, no late penalty)

(i)             Compress your entire Program folder into a zip file and upload it through Biola Canvas.

(ii)           Carefully fill out this self-evaluation report, (no need for a peer review this time just describe your test cases and the results you see) and upload it through Biola Canvas.

 

 

*************************************************************************************************

 

Week 8: Test #2 | Torrey Conference

 

Test 2 Open-book test on Programming World Wide Web (Chapters 1~3): Tuesday Oct. 18

 

 

Warm-up exercises to prepare for the test:

 

 

*************************************************************************************************

 

Weeks 9-10: Object-oriented Programming: Inheritance, Virtual Functions, and Polymorphism (I) | Basics of Javascript

 

Reading #9: due: Thursday Nov. 3.

 

 

Programming #3 (Use vectors and maps to implement an expression evaluation class) due: Thursday Nov. 3. Submission link is open again for late submission till Thursday Nov. 10.

 

**************************************************************************************************************

 

Week 11: Object-oriented Programming: Inheritance, Virtual Functions, and Polymorphism (II)| Javascript and DOM

 

Reading #11: due: Thursday Nov. 10.

 

 

Homework #3 on class inheritance and subtype polymorphism: Due: Thursday Nov. 10.

 

 

Test 3: a programming test on inheritance, virtual functions, and polymorphism: Thursday Nov. 17.

 

 

**************************************************************************************************************

 

Week 12: Templates and Generic Algorithms (I) | Dynamic Contents with Javascript

 

Reading #12: due: Thursday Nov. 17.

 

 

Related examples:

  1. Template functions: simple examples.
  2. Lambda expressions and callable function objects: demo programs.
  3. The C++ Standard Library - A Tutorial and Reference by Josuttis: examples 1, 2, 3, 4, 5, 6, 7, 8.
  4. The C++ Standard Library - A Tutorial and Reference by Josuttis: All examples as zip files: 1st ed. and 2nd ed from the book websites.
  5. Standard Template Library Programmer's Guide by SGI: See the table of contents and examples here.

 

 

**************************************************************************************************************

 

Week 13: Templates and Generic Algorithms (II) | XML

Reading #13: due: Thursday Nov. 24 (submission open till Dec. 1)

 

Programming 4A due: Thursday Nov. 24 (submission link open till Thursday Dec. 22)

 

 

**************************************************************************************************************

 

Week 14: Templates and Generic Algorithms (III) | Server-Side Web Programming in PHP

In-class lab assignment (Lab 4) on Python: Tuesday Dec. 6

 

 

Reading #14: due: Thursday Dec. 8

 

 

Web Programming at Biola: Ryan Hall and Devin Hanlon (web programmers, Biola IT) Thursday, Dec 8

 

Programming 4B due: Thursday Dec. 15 (submission link open till Thursday Dec. 22)

 

 

Final Test in the final-exam week (Test 4) on templates, generic algorithms, lambda expressions, and callable function objects

       Constraints: Open book test. No compilers allowed. No internet search allowed except for examples referenced by our class website.

 

 

Related examples:

  1. Template functions: simple examples.
  2. Lambda expressions and callable function objects: demo programs.
  3. The C++ Standard Library - A Tutorial and Reference by Josuttis: examples 1, 2, 3, 4, 5, 6, 7, 8.

 

  1. The C++ Standard Library - A Tutorial and Reference by Josuttis: All examples as zip files: 1st ed. and 2nd ed from the book websites.
  2. Standard Template Library Programmer's Guide by SGI: See the table of contents and examples here.

 

 

Homework #4: A brief exploration of Python due: Thursday Dec. 22

 

*************************************************************************************************

TA hours: T Th 1:00~4:00pm (Alvin Suh, William Tan), MATH/CS Alcove lab

 

*************************************************************************************************

 

       Our official C++ compiler version is Microsoft Visual C++ 2013 Express Edition (instead of the Visual studio 2015 version) on Windows platforms is. You can download, install, and register Microsoft Visual C++ 2013 Express Edition for free.

       Semester Project: Biola Interpreter Project.

 

*************************************************************************************************

 

 

To the Top of the Page