Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

COMP 3320: Programming languages: Course syllabus, Spring 2015

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.

Course information

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

Description

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.

Objectives

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

Instructional methods

  • Lecture with discussion

  • Cooperative learning

  • Demonstration

  • Practical exercise

Textbook and reading materials

  • 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.

Required software and accounts

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/.

Coursework

Homework

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:

  1. Fork the repository, making a copy under your own user.

  2. Clone the repository to your computer, where you can then work on it.

  3. Push your solution to GitHub.

  4. Create a pull request with the class repository with your solution.

  5. 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.

Expectation

Students are expected to spend approximately six (6) hours a week, on average, completing homework assignments in order to achieve the learning objectives for this 15 week lecture course. This meets the Federal Government’s expectation of two hours of homework for each hour of lecture.

Quizzes

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.

Exams

There will be one midterm and a final, which will be comprehensive. If you must miss an exam, let me know as soon as possible. If you do not let me know, this will result in you getting a zero for the exam.

Grading

Late homework

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.

Composition of final grade

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%.

Letter grade assignments

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

Tentative schedule

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

Policies

Classroom attendance and participation

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.

Academic honesty

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.

Accommodations

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.

Changes to syllabus

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.

Instructor feedback

If you have any concerns, questions, or comments, please let me know. I am here to help you succeed, but I can not help you if I do not know you need help.

About

Syllabus for CS3320: Programming Languages

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages