Blue Flower

Software engineering 1

  • References
  1. Software Engineering A Practitioner 's Approach, R.S Pressman, 2001
  2. Software Engineering , Dr.S Parsa
  3. Software Project Management - A Unified Framework, Walker Royce , 2000

 

 

 

 Teaching Assistants:

  •  Mohammad Javad Amiri
  •  Mostafa Khoramabadi Arani 

 

 

 

Lectures

Lecture #

 Subjects

References

Handouts

Date

1,2 Project Management ref #1, pages 55..78 Handout #2, pages1..11  
 2 Context Diagram ref #2, pages 125..133    
3 Functional and non-Functional Requirments ref #2, pages 397..399    
4 Vision Document ref #2, pages 413..428     
5 UML Entities & diagrams ref #2, pages 429..457    

6,7

Use Case Point   Handout #2, pages 79..85  

8

RUP ref # 3, pages 76..82, 139..146    

9

Project Tracking & Scheduling   Handout #2, pages 85..101  

10

Project Planning with UP   Handout #2, pages 102..110  
11,12 Project Management in RUP   Handout #3, pages 67..105  
13,14 Software Quality Assurance ref #1, pages 192..209 Handout #4, pages 1..6  
15 Statistical Software Quality Assurance ref #1, pages 209..212 Handout #4, pages 7..9  
16 Software Reliability ref #1, pages 212..214    

 

 

Advanced software engineering Advanced software engineering Advanced software engineering

Reverse engineering

Teaching Assistant:

Mohammad Javad Amiri

Mohammad Hadi Alaeiyan

Presentations:

Anti Disassembley

 

 

 

Course description and prerequisites

In this course, students will gain insights into designing and constructing working compilers, translating programs from a source into a destination language. The course will cover the structure of compilers, lexical, syntax and semantics analysis and intermediate code generation. As a part of the coursework students will experience using a compiler generator such as Antlr to develop a working compiler translating programs written in a given language into MsIL or ByteCode.

Motivation

Why should I learn compilers? Am I going to write a compiler?!!! How many Compilers are there?

Compilers and high-level languages are as central to the information age as semiconductor technology [ Next 50 Years.pdf ]

Teaching Assistants:

Mohammad Javad Amiri

Mostafa Khoramabadi Arani

Amir Mohammad Zade Lajevardi

Research Interests

·         Visual languages

·         Syntactic pattern recognition

·         Error recovery

Main References and Handouts

Handouts

References

1- JRefactory: A software tool for AST generation from Java

1. Compiler Writing, Alfred V. Aho. 2nd edition, 2007

2- Writing a compiler to generate bytecode, JVM

2. Modern Compiler Implementation In Java, 2003  

3- Antlr: A Compiler Generator, PPT

3. Algorithms for Compiler Design, O.G. Kakde

4. IL: Net Intermediate LanguagePPT1PPT2PPT3

 

5. Gold Parser : A compiler generator developed in Delphi

 

6. Advanced Compiler (.doc , .pdf)

 

Lectures 

References

Subject

Date

Next 50 years

Next 50 years with compilers

 

Next 50 years

Next 50 years with compilers

 

Chapter-1

Stages of a compiler

 

Chapter-2 :  1-8

Lexical Analysis : Lexical rules

 

Chapter-2 : 8-24

How to develop a Lexical Analyzer

 

Lex & yaccLex

Lex : Lexical analyzer generator

 
 

Exercises

 

Chapter-3 : 1-13

Grammars and parsers

 

Chapter-3: 1-13

Rightmost and leftmost derivations

 

Chapter-3

First and follow sets

 

Chapter-4

Top-down parsers

 
 

First Exam

 

Chapter-4

Top-down pars table

 

Chapter-4

Recursive Descent Parsers

 

Chapter-5

Bottom up  Parsers

 

Chapter-5

LR(1) Parsers

 

Chapter-5

LALR(1) Parsers

 

Chapter-5

SLR(1) Parsers

 

Chapter-5

Ambiguous Grammars

 

Lex & YaccAntlr

Parser Generators ( Yacc & Antlr )

 
 

Second Exam

 

Chapter7.pdf

Intermediate Codes

 

JRefactory, Chapter7

Abstract Syntax Trees

 

Chapter7.pdf

Three address Code

 

Chapter7.pdf

Syntax Directed Translation

 

Chapter7.pdf

Attributed Grammars

 

Chapter8.pdf

Type Checking

 

2. Jasmine & JVM,  IL

Byte Code & IL intermediate code generations

 

Advanced compilers 

Teaching Assistants:

Mohammad Javad Amiri

Amir Mohammad Zade Lajevardi

Download .doc Teacher Notes

Download .pdf Teacher Notes

Student Exercises:

Compiler optimization implementation Download

Aliasing Download 

CUDA  Download 

VLIW  Download

previous exams :

        Download