Class meeting | 11:00-11:50am MWF Austin 302 |
---|---|
Instructor | Karl Abrahamson |
Office | Sci. & Tech. C-113 |
Office hours | MTWF 2:00–3:00 and Tu 11:00–12:00 or by appointment |
Phone | 328-9689 |
abrahamsonk@ecu.edu | |
Course web page | www.cs.ecu.edu/~karl/3675/fall15/ |
My web page | www.cs.ecu.edu/~karl/ |
Text | Concepts of Programming Languages: A Unified Approach (August 2015) by Karl Abrahamson |
You should have had a course in data structures and be familiar with at least one procedural or object-oriented programming language, such as Java, C or C++. You should be a proficient computer programmer.
Programming languages are the notation in which programmers express their creations. It is said that natural language influences how people think. Whether or not that is true, it is certainly the case that programming languages strongly influence how programmers and software developers think.
This course explores different kinds of programming languages: their philosophies, components, structure, advantages and disadvantages. It also covers issues such as type checking, specification of syntax and semantics of languages and how programming languages are implemented.
After successfully completing this course, students will have the following abilities.
There will be 12 quizzes, on the following dates.
You can bring one prepared 8.5x11" piece of paper, written on both sides, to each quiz. I will not collect those papers.
The final exam is Monday, December 14 from 11:00am to 1:30pm in Austin 302.
I will drop your lowest quiz grade, leaving 11 quizzes.
Grading will be on the basis of eight programming assignments (36%), eleven quizzes (40%) and a comprehensive final exam (24%).
Tentative cutoffs for grades will be as follows. These cutoffs will not be raised.
A | 93% |
A– | 90% |
B+ | 87% |
B | 83% |
B– | 80% |
C+ | 76% |
C | 72% |
C– | 68% |
D+ | 64% |
D | 60% |
D– | 56% |
I will not take attendance. It is up to you to attend class. You are responsible for announcements and assignments given in class. If you miss a class, it is up to you to obtain notes and any other information that was provided in the class. Excuses that you did not know about something because you did not come to class and did not obtain the information will not count for anything at all.
Those who choose not to attend class can count on doing poorly in this course. If you choose not to attend class, then you must live with the consequences of that decision, however bad they are.
No incompletes will be issued in this course except for extraordinary circumstances, and even then only if you are nearly done already, and have done work of acceptable quality so that it is realistic that you can pass the course. An incomplete will not be given simply because a student could not find the time to do the course work. By registering for this course, you are committing to finding time to do the work.
Attend class. Arrive on time. Do not skip class either because you think that you already understand the material or for the opposite reason, that you think you cannot get it.
Do not bring distractions to class. If you read your email, listen to music, or engage in other distracting activities during class, you will get very little out of class. It has been conclusively shown that multitasking does not work; it only ensures that you do a poor job on each task.
Ask questions in class. If you do not understand something, ask a question about it.
Ask questions outside of class. Your best bet is to use email. If you have a question about an assignment, attach all of your files to the email message. Do not just copy the part that you think is wrong into the email message. Ask questions early. Do not wait until the last minute.
Please use a subject indicating that you are asking a question for CSCI 3675, and always include your name in your email. A reasonable subject for a question about assignment 3 is
CSCI 3675 question about assignment 3Please send email to the address listed on the first page of this syllabus. Do not expect immediate answers. Give yourself time to get answers.
Do not allow yourself to fall behind. Work on the homework early. Do not wait until just before the deadline. If you start to fall behind, work right away to catch up. If you are falling behind because you do not understand something, ask for help. Do not just give up!
Schedule time to work outside of class.
Read material twice. Take a break (like a whole day or longer) in between. Work the exercises. Later in the term, go back over things that you looked at earlier in the term. You will learn much more that way.
Get adequate sleep. Sleep is important both before and after you learn new concepts. Sleep before enables you to concentrate, and sleep afterwards is critical for moving new information into permanent memory.
If you are having trouble, seek help soon. Do not wait until it is too late.
Here is a tentative lecture schedule. It might need to be adjusted as we go.
Date | Topics | Reading |
---|---|---|
M. 8/24 |
Introduction. Form and function. Assn. 1 assigned. |
1.1, 3.1. |
W. 8/26 |
Survey of kinds of languages. Imperative languages. Flowgraphs. Structured programming. Lvalue and rvalue. Declarative languages. Static languages. |
1.3, 5.1–5.3. |
F. 8/28 |
Language implementation. Compilers, interpreters. Static, stack and heap allocation. Garbage collectors. |
1.2, 7. |
M. 8/31 | Quiz 1. | |
W. 9/2 |
Memory managagement. Stack management. Closures and static links. Function closures. |
8. |
F. 9/4 |
Data. Products, coproducts. Lists, arrays. First-class variables. |
4.1.–4.4, 4.8, 6.2. |
M. 9/7 | Holiday | |
W. 9/9 |
Equational programming. Assn. 1 due. |
9.1–9.6. |
F. 9/11 | More equational programming. | 9.7–9.10. |
M. 9/14 |
Quiz 2. More equational programming. Assn. 2 assigned. |
|
W. 9/16 | Scheme. | 11.1–11.6. |
F. 9/18 | More Scheme. | 11.7–11.10. |
M. 9/21 |
Quiz 3. More Scheme. Assn. 3 assigned. |
|
W. 9/23 |
Evaluation: Lazy and eager evaluation. Assn. 2 due. |
10.5. |
F. 9/25 | Higher order functions. | 10.1–10.3. |
M. 9/28 |
Quiz 4. More higher order functions. Assn. 4 assigned. |
|
W. 9/30 |
λ-calculus. Assn. 3 due. |
23.1–23.2. |
F. 10/2 | More λ-calculus. | 23.4–23.6. |
M. 10/5 |
Quiz 5. More λ-calculus. |
|
W. 10/7 |
Types and type checking. Ad-hoc polymorphism. |
12.1–12.3, 13.1–13.2. |
F. 10/9 |
Parametric polymorphism. Polymorphic types. |
13.3, 13.5–13.6, 14.9. |
M. 10/12 and T. 10/13 | Fall break. | |
W. 10/14 |
Type inference. Assn. 4 due. |
13.4. |
F. 10/16 |
Defining new types. Constructors and unconstructors. Types with multiple constructors. Assn. 5 assigned. |
14.1–14.2, 14.4–14.5. |
M. 10/19 |
Quiz 6. More on new types. |
|
W. 10/21 | Scope. Modules. | 1.4, 6.1. |
F. 10/23 | Exception handling. | 16.1–16.2, 16.4.1. |
M. 10/26 |
Quiz 7. Backtracking. Assn. 6 assigned. |
16.3, 16.4.2, 16.5. |
W. 10/28 |
Logic programming. Assn. 5 due. |
17.1–17.7. |
F. 10/30 | More logic programming. | 17.8–17.11. |
M. 11/2 |
Quiz 8. Prolog. Assn. 7 assigned. |
17.12‐17.16, 18.1–18.6. |
W. 11/4 |
More Prolog. Cuts, negation and arithmetic. Assn. 6 due. |
18.7–18.10. |
F. 11/6 | Object-oriented programming. | 19.1; 19.2. |
M. 11/9 |
Quiz 9. More object-oriented programming. |
20.1–20.2. |
W. 11/11 |
Virtual methods and abstract classes. Assn. 7 due. Assn. 8 assigned. |
20.3, 20.6. |
F. 11/13 | Reflection. | |
M. 11/16 | Quiz 10. | |
W. 11/18 | Defining syntax. | 3.1; 3.2.1–3.2.4. |
F. 11/20 | More syntax. | 3.2.5–3.2.8. |
M. 11/23 |
Quiz 11. More syntax. |
|
W. 11/25 to F. 11/27 | Thanksgiving break. | |
M. 11/30 | Semantics. | 22.1 |
W. 12/2 |
Verification. Assn. 8 due. |
24.1–24.2. |
F. 12/4 | More verification. | 24.3. |
M. 12/7 | Quiz 12. | |
T. 12/8 | Reading day. | |
M. 12/14 | Final exam, 11:00am–1:30pm. |
You can feel free to get help from anyone on the following issues concerning programming assignments.
But, other than from the instructor or graduate student tutor, it is considered cheating to obtain assistance for the following.
Never submit someone else's work as your own. That is plagiarism. Do not get a copy of a function definition from someone else and insert it into your program. Violations of these policies will be handled in a manner consistent with official university policy.
Note. To avoid problems with people stealing your work, do not recycle printouts of your program code in a place whether other students can pick them up.
For information about