|
Note
|
This syllabus is still under development and will be changed. The most recent version can be found at https://github.com/nau-comp3320/syllabus. |
- Number
-
COMP 3320
- Title
-
Programming languages
- Instructional Hours/Credits
-
Lecture - 45 clock hours/3 semester credits
- Instructor
-
Daniel Solano Gómez <dsolano@na.edu>, 832-230-5550
- Office hours
-
Tuesdays, Thursdays; 14:30–15:30; Room 220A. Additional times by appointment.
- Prerequisite
-
COMP 2313: Data structures
This course covers the principles of programming language design; specification of syntax and semantics; and programming styles and their underlying paradigms, including imperative, functional, logic and object-oriented programming styles.
By the end of this course, you should be able to:
-
Identify and describe the features of a programming language, such as its paradigm, type system, scoping rules, data abstraction support, concurrency support, etc.
-
Evaluate the suitability of a given language for a particular purpose
-
Define the syntax of a language using BNF notation
-
Describe the different techniques for specifying the semantics of a language
-
Describe the methods and challenges of performing lexical and syntax analysis
-
Develop software using a variety of programming paradigms, including imperative, functional, logic, and object-oriented
-
Concepts of Programming Languages (10th edition), Robert W. Sebesta, Pearson, 2013, ISBN 0-13-139531-9.
I may provide additional reading material in class or on-line.
In order to complete homework assignments, you will need access to a computer with:
-
A text editor of your choice
-
Compilers for languages used in class (to be determined)
-
Git, a revision control system
Additionally, you will need a basic, free account on GitHub. You can find good resources for learning how to use Git and GitHub at https://help.github.com/articles/good-resources-for-learning-git-and-github/.
I will assign homework about once a week. Each homework assignment will be available under the class’s GitHub account at https://github.com/nau-comp3320. To work on the assignment, you will need to:
-
Fork the repository, making a copy under your own user.
-
Clone the repository to your computer, where you can then work on it.
-
Push your solution to GitHub.
-
Create a pull request with the class repository with your solution.
-
I will provide feedback to you as a comment in the pull request.
The first homework assignment should help you learn these steps.
|
Tip
|
It is a good practice to break your work down into small steps and commit each step as you finish. When you commit, you should provide a good description of the change you made. Doing both of these things will make it easier for you to review your work later and identify where you may have introduced a bug. |
I may give short quizzes at the beginning of class. The main purpose of these quizzes is to give me a better idea of how well the class is progressing.
I will give you the due date for each assignment when I assign it. If you are having trouble with the assignment, let me know as soon as possible. I do not guarantee that I will accept any late work, and if I do so, I will deduct 20% for each day it is late.
I will compute your final grade as follows:
Homework |
45% |
Quizzes |
5% |
Midterm |
25% |
Final |
25% |
Each homework assignment will have equal weight. Each quiz will also have equal weight.
At my sole discretion, I may use your history of class participation to bump up your final grade by more than 2%.
I will determine final letter grades using the table below. I may adjust letter grade assignments downwards, but never upwards, i.e. an 87 will guarantee a B+ or better.
95–100 |
A |
90–95 |
A- |
87–90 |
B+ |
83–87 |
B |
80–83 |
B- |
77–80 |
C+ |
73–77 |
C |
70–73 |
C- |
67–70 |
D+ |
63–67 |
D |
60–63 |
D- |
Below 60 |
F |
Note that the following schedule is subject to change.
Readings in italics are optional, but highly recommended.
| Week | Topic | Textbook reading |
|---|---|---|
20 Jan–22 Jan |
Introduction, factors in creating/choosing a programming language, history of the development of high-level languages |
Chapter 1, Chapter 2 |
27 Jan–29 Jan |
Syntax and semantics, BNF grammars, attribute grammars, types of dynamic semantics |
Chapter 3, Chapter 4 |
3 Feb–5 Feb |
Ruby, week 1 |
|
10 Feb–12 Feb |
Ruby, week 2 |
|
17 Feb–19 Feb |
Ruby, week 3 |
|
24 Feb–26 Feb |
Propositional logic, Prolog |
Chapter 16 |
3 Mar–5 Mar |
Prolog, week 2 |
|
10 Mar–12 Mar |
More Prolog, Midterm |
|
16 Mar–20 Mar |
Spring break |
|
24 Mar–16 Mar |
ML, week 1 |
|
31 Mar–2 Apr |
ML, week 2 |
|
7 Apr–9 Apr |
ML, week 3 |
|
14 Apr–16 Apr |
Lisp, week 1 |
|
21 Apr–23 Apr |
Lisp, week 2 |
|
28 Apr–30 Apr |
Lisp, week 3 |
|
5 May–13 May |
Final examination |
You should attend class and participate in classroom discussions. If you miss class, you risk missing quizes, assignment details, schedule updates, and material not covered in the textbook.
Each student assumes the responsibilities of being a member of the NAU academic community. All acts of plagiarism are not tolerated including: cheating, claiming other’s work as their own, fabrication, and helping one to commit any of these acts. Any violations of academic honesty will receive strict disciplinary action, which can include suspension and even expulsion from NAU.
In this class, it is permissible and encouraged to assist classmates in general discussion on how to solve homework problems. It is not permissible to copy another’s work (or portions thereof) and represent it as your own.
Students that require any accommodation (such are students with disabilities, religious conflicts, etc…) should notify the instructor as early as possible and accommodations will be made on an individual basis in adherence with the regulations outlined in the Student Handbook.
This syllabus is subject to adjustment as the semester progresses. You are encouraged to watch the syllabus repository at https://github.com/nau-comp3320/syllabus to be notified of updates.