BBM 301 - Programming Languages (Fall 2015)

Lectures: Mondays 13:00-15:45 @D3 (Section 1), @D4 (Section 2), @D8 (Section 3)

When You Write Your Essays in Programming Languages, © www.somethingofthatilk.com



Instructor:   

Asst. Prof. Aykut Erdem (Sec. 1)      

Asst. Prof. Nazli Ikizler-Cinbis (Sec. 2)      

Assoc. Prof. Pinar Duygulu Sahin (Sec. 3)

aykut-at-cs.hacettepe.edu.tr

nazli-at-cs.hacettepe.edu.tr

pinar-at-cs.hacettepe.edu.tr

Office: 111, Tel: 297 7500 / 146

Office: 112, Tel: 297 7500 / 147

Office: 2??, Tel: 297 7500 / 131

Office Hours: To be announced..

Office Hours: To be announced..

Office Hours: To be announced..


Lectures: 

Monday 

13:00-15:50 @ D3 (Section 1)

Monday 

13:00-15:50 @ D4 (Section 2)

Monday 

13:00-15:50 @ D8 (Section 3)


TAs:

Pelin Canbay

Nebi Yilmaz

pelin-at-cs.hacettepe.edu.tr

yilmaz-at-cs.hacettepe.edu.tr

Office: 222, Tel: 297 7500 / 155      

Office: 121, Tel: 297 7500

Office Hours: To be announced..

Office Hours: To be announced..


Course Description:

The subject matter of this third-year undergraduate course is the programming language pragmatics. The course is structured around basic concepts in design and implementation of programming languages, including syntax, semantics, names, bindings, type checking, subprograms, etc. The students will also be introduced to the tools for designing lexical and syntactical analyzers, in particular lex and yacc.

The main aim of the course is to help students to gain an analytical and comparative look at programming languages and their implementations. The students are also expected to complete a semester-long programming project on implementing a programming language of their own design.


Textbook:

Concepts of Programming Languages, Robert W. Sebesta, Pearson, Tenth Edition.


Grading Policy:

Assignments and quizzes  

10%

Course project

20%

Midterm exam

30%

Final

40%


Important Dates:

Project (Phase 1 in)

12 October 2015 (tentative)

Project (Phase 2 in)

26 November 2015 (tentative)

Midterm exam

9 November 2015

Final

To be announced later.


Detailed Schedule:


Week  

Date    

Topic  

Additional Readings  

Project


1

09/14

Introduction to programming languages

2

09/21

No class (Religious Holiday)

3

09/28

Describing syntax and semantics

4

10/5

Lex and yacc

5

10/12

Yacc parser and conflicts

Phase 1 in

6

10/19

Names, bindings, type checking and scopes

7

10/26

Data types

Phase 1 due, Phase 2 in

8

11/02

Data types (cont'd.)

9

11/09

Midterm exam

10

11/16

Expressions, assignments

11

11/23

Control statements

Phase 2 due

12

11/30

Subprograms

13

12/07

Implementing subprograms

14

12/14

Functional languages

15

12/21

Functional languages (cont'd.)



Resources

Course Project

Communication:

The course webpage will be updated regularly throughout the semester with lecture notes, programming and reading assignments and important deadlines. All other communications will be carried out through Piazza. Please enroll it by following the link https://piazza.com/hacettepe.edu.tr/fall2014/bbm301


Policies:

All work on assignments must be done individually unless stated otherwise. You are encouraged to discuss with your classmates about the given assignments, but these discussions should be carried out in an abstract way. That is, discussions related to a particular solution to a specific problem (either in actual code or in the pseudocode) will not be tolerated. In short, turning in someone else's work, in whole or in part, as your own will be considered as a violation of academic integrity. Please note that the former condition also holds for the material found on the web as everything on the web has been written by someone else.