Difference between revisions of "Fall 2020: System Programming"

From MKWiki
Jump to navigation Jump to search
 
(111 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Logistics ==
 
== Logistics ==
*Class Timings: '''Wednesdays'''(1<sup>st</sup>,2<sup>nd</sup> slot), '''Saturdays'''(2<sup>nd</sup>,3<sup>rd</sup> slot)
+
*Class Timings: '''Mondays'''(4<sup>th</sup> and 5<sup>th</sup> slot), '''Wednesdays'''(1<sup>st</sup>,2<sup>nd</sup> slot),
 
*Classroom: Online
 
*Classroom: Online
*Lab Timings:'''Mondays'''(4<sup>th</sup> and 5<sup>th</sup> slot) '''Wednesdays'''(3<sup>rd</sup> slot),'''Saturdays'''(1<sup>st</sup> slot)
+
*Lab Timings:'''Wednesdays'''(3<sup>rd</sup> slot),'''Fridays'''(1<sup>st</sup> slot) '''Saturdays'''(2<sup>nd</sup>,3<sup>rd</sup> slot)
  
 
== Course Overview ==
 
== Course Overview ==
 
* As per the [http://mkbhandari.com/mkwiki/data/fall2020/spSyllabus.pdf '''COURSE Guidelines''']
 
* As per the [http://mkbhandari.com/mkwiki/data/fall2020/spSyllabus.pdf '''COURSE Guidelines''']
  
== Lecture Schedule ==
+
== Lectures ==
{| class="wikitable" style="text-align: left; width: 100%";  
+
{| class="wikitable" style="text-align:left; width: 100%";  
 
|-
 
|-
 
!Date
 
!Date
Line 15: Line 15:
 
!Readings
 
!Readings
 
|-
 
|-
| style="width: 8%" | Fri 10/01
+
| style="width: 8%" | Wed 19/08
| style="width: 42%" | The History and Evolution of Java. An Overview of Java
+
| style="width: 58% | '''''Introduction to System Software''''', System Software and Machine Architecture, The Simplified Instructional Computer(SIC).
| style="width: 33%" | [http://mkbhandari.com/mkwiki/data/spring2020/Lect01.pdf '''Lect01.pdf'''], OOPs Principles [<span style="color:#009000"> Class notes </span>]
+
| style="width: 17%" | [http://mkbhandari.com/mkwiki/data/fall2020/1IntroSS.pdf '''0.pdf''']
| Chapter 1,2
+
| Chapter 1 (Additional R1)
 
|-
 
|-
| Thu 16/01
+
| Mon 24/08, Wed 26/08, Fri 28/08
| OOPs Principles, JVM Architecture
+
| '''''Assemblers''''': Introduction to Assembler. A Simple Manual Assembler. '''Assembler Design Process''': (1) Major Data Structures used (Machine Opcode Table, Pseudo Opcode Table, Symbol Table), (2) '''Two-pass Assembler''', (3) '''Single-pass Assembler'''. '''Load-and-go Assemblers''', Object file formats.
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect02.pdf '''Lect02.pdf'''], OOPs Principles [<span style="color:#009000"> Class notes </span>]
+
| [http://mkbhandari.com/mkwiki/data/fall2020/2Assembler.pdf '''Assemblers.pdf''']
| Chapter 2
+
| Chapter 3 (R2)
 
|-
 
|-
| Fri 17/01
+
| Mon 31/08, Wed 02/09, Mon 07/09
| Data Types, Variables,and Arrays. Operators. Control Statements.
+
| '''''Linkers and Loaders''''':Introduction to '''Linking''', Static vs. Dynamic Linking, Combining Object Modules, '''Pass I of Linking''', '''Pass II of Linking''', Algorithm for Pass II. LIbrary Linking. Position Independent Code. Shared Library Linking. '''Loader''': Binary Image, Types of Loaders.
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect03.pdf '''Lect03.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/3LinkerLoader.pdf '''LinkerNLoader.pdf''']
| Chapter 3, 4, and 5
+
| Chapter 4 (R2)
 
|-
 
|-
| Wed 29/01
+
| Wed 09/09, Fri 11/09
| Introducing Classes
+
| '''''Introduction to Compilers''''', Language Processors. The Structure of a Compiler, '''Phases of a Compiler'''.
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect04.pdf '''Lect04.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/4IntroCompilers.pdf '''Intro2Compilers.pdf'''] 
| Chapter 6
+
[http://mkbhandari.com/mkwiki/data/fall2020/TranslationPhase.png '''Translation Phase.jpg''']
 +
| Chapter 1 (R1)
 
|-
 
|-
| Thu 30/01
+
| Mon 14/09, Sat 19/09, Mon 21/09, Wed 23/09
| Introducing Classes(2)
+
| '''''Lexical Analysis''''': <br>
| Constructors, this keyword, A Stack Class, Garbage Collection, The finalize() Method [<span style="color:#009000"> Class notes </span>]
+
(1) '''Role of Lexical Analyzer''' - Lexical Analysis vs. Parsing. Tokens, Patterns, and Lexemes. Attributes for Tokens. Lexical Error. <br>
| Chapter 6
+
(2) '''Specification of Tokens'''-Symbols, Alphabets, Strings(Terms for Parts of Strings), Languages(Operations on Languages). '''Regular Expressions''' (Algebraic Laws), Regular Definitions, Extensions of Regular Expressions.<br>
 +
(3) '''Recognition of Tokens''', Transition Diagrams, Implementation of Transition Diagrams. <br>
 +
(4) '''Symbol Table''' (discussed several times).<br> 
 +
(5) '''Lexical Analyzer Generatror''' - Lex (self study from reference book, covered and discusses from course wiki)
 +
| [http://mkbhandari.com/mkwiki/data/fall2020/5LexicalAnalysis.pdf '''LA.pdf''']
 +
| Chapter 3 (R1)
 
|-
 
|-
| Wed 12/02
+
| # Fri 25/09
| A Closer Look at Methods and Classes
+
| colspan="3" | '''TEST 1''', Syllabus (1) Introduction to System Softwares, (2) Assemblers, (3)Linker and Loader, (4) Introduction to Compilers
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect06.pdf '''Lect06.pdf''']
 
| Chapter 7
 
 
|-
 
|-
| Thu 13/02
+
| Wed 30/09, Mon 05/10, Fri 09/10, Wed 14/10, Fri 16/10, Mon 19/10, Wed 21/10, Mon 26/10
| A Closer Look at Methods and Classes (2)
+
| '''''Syntax Analysis''''':<br>
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect07.pdf '''Lect07.pdf''']
+
(1) Role of Syntax Analyzer. <br>
| Chapter 7
+
(2) Context Free Grammars(CFGs), Derivations, Parsing(online content). <br>
 +
(3) '''Bottom-up Parsing''' - Reductions, Handle and Handle Pruning, '''Shift-Reduce Parsing''', Conflicts during Shift-Reduce Parsing('''shift/reduce''' or '''reduce/reduce''') <br>
 +
(4) '''LR Parsing''': Types of LR Parsers - '''LR(0), SLR(1), CLR(1), LALR(1)'''. First and Follow in Parsing is also discussed since their concepts are used in Parsers. <br>
 +
(5) '''YACC''' - The Parser Generator.
 +
| [http://mkbhandari.com/mkwiki/data/fall2020/6SyntaxAnalysis(Partial).pdf '''SA.pdf''']<br> [http://mkbhandari.com/mkwiki/data/fall2020/6HWnotes(1).pdf '''HWnotes1.pdf''']<br>[http://mkbhandari.com/mkwiki/data/fall2020/6HWnotes(2).pdf '''HWnotes2.pdf''']
 +
| Chapter 4 (R1)
 
|-
 
|-
| Thu 20/02
+
| # Fri 23/10
| A Closer Look at Methods and Classes (3)
+
| colspan="3" | '''TEST 2''', Syllabus Test 1 + Lexical Analysis.
| final keyword, Arrays Revisited, Nested and Inner Classes, Varargs, Using Command-Line Arguments, Exploring the String Class  [<span style="color:#009000"> Class notes </span>]
 
| Chapter 7 [http://mkbhandari.com/mkwiki/data/spring2020/A-Closer-Look-at-Methods-and-Classes.pdf '''Chapter7.pdf''']
 
 
|-
 
|-
| Fri 21/02
+
| SDT
| Inheritance
+
| '''''Syntax Directed Translations''''':<br>
| Inheritance basics [<span style="color:#009000"> Class notes </span>]
+
(1) Syntax Directed Definition. <br>
| Chapter 8
+
(2) Synthesized attrributes and Inherited attributes. <br>
 +
(3) S-Attributed SDD and L-Attributed SDD. <br>
 +
(4) Parse Tree, Annotated Parse Tree. <br>
 +
(5) Examples of SDD/SDT - A Simple Desk Calculator, Simple Type Declarations.
 +
(6) Dependency Graph, Ordering of evaluation of attributes, etc.
 +
| [http://mkbhandari.com/mkwiki/data/fall2020/7SDT.pdf '''SDT.pdf''']
 +
| Chapter 5 (R1)
 
|-
 
|-
| Thu 05/03
+
| TAC
| Inheritance basics, Using super, Creating a Multilevel Hierarchy, When Constructors are executed.
+
| '''''Three Address Code''''': (1) Quadruple, (2) Triple, (3) Indirect Triple, (4) Three Address Instruction forms,  (5) Some examples..
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect10.pdf '''Lect10.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/8TAC.pdf '''TAC.pdf''']
| Chapter 8
+
| Chapter 6 (R1)
 
|-
 
|-
| Fri 06/03
+
| # Sat 21/11
| Method overriding, Dynamic Method Dispatch, Using Abstract Classes, Using final with Inheritance, The Object Class.
+
| colspan="3" | '''TEST 3''', Syllabus Syntax Analysis.
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect11.pdf '''Lect11.pdf''']
 
| Chapter 8
 
 
|-
 
|-
| L12
+
| ICG (remaing part)
| Packages
+
| Types and Declarations, Translation of Expressions, Type Checking, Control Flow
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect12.pdf '''Lect12.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/9ICG_6.3.pdf '''6.3.pdf''' ] '''Scribe:''' Tanya Gupta  <br> [http://mkbhandari.com/mkwiki/data/fall2020/9ICG_6.4and6.5.pdf '''6.4and6.5.pdf''' ] '''Scribe:''' Prakriti, Pratika, Vivek, Namanpreet <br> [http://mkbhandari.com/mkwiki/data/fall2020/9ICG_6.6.pdf '''6.6.pdf'''] '''Scribe:''' Anshika, Bhumi, Chirag, Ashwin
| Chapter 9
+
| Chapter 6 (R1)
 
|-
 
|-
| L13
+
| RTE
| Interfaces
+
| '''''Run-time Environment''''':(1) Strorage Organization, (2) Activation Records, (3) Activation Trees, (4) Sub-division of run-time memory.
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect13.pdf '''Lect13.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/10RTE.pdf '''RTE.pdf''' ]  
| Chapter 9
+
| Chapter 7 (R1)
 
|-
 
|-
| L14
+
| CG
| Exception Handling
+
| '''''Code Generation''''':(1) Position of Code Generator, (2) Issues in the design of Code Generator, (3) The Target Lanuage
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect14.pdf '''Lect14.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/11CodeGeneration.pdf '''CG.pdf''' ]  
| Chapter 10
+
| Chapter 8 (R1)  
|-
 
| L15
 
| Multithreaded Programming
 
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect15.pdf '''Lect15.pdf''']
 
| Chapter 11, Till page 246
 
|-
 
| L16
 
| Enumerations, Autoboxing,and Annotations (Metadata)
 
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect16.pdf '''Lect16.pdf''']
 
| Chapter 12, Till page 279
 
|-
 
| L17
 
| I/O, File Operations(Create a File, Get File Information, Write To a File, Read from a File)
 
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect17.pdf '''Lect17.pdf''']
 
| Chapter 13, Till page 321
 
Read [https://www.javatpoint.com/java-file-class '''File Class'''] for file operations.
 
|-
 
| L18
 
| String Handling
 
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect18.pdf '''Lect18.pdf''']
 
| Chapter 16
 
|-
 
| L19
 
| The Applet Class
 
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect19.pdf '''Lect19.pdf''']
 
| Chapter 23, Till page 764
 
|-
 
| L20
 
| Event Handling and AWT(Abstract Window Toolkit)
 
| [http://mkbhandari.com/mkwiki/data/spring2020/Lect20.pdf '''Lect20.pdf''']
 
| Chapter 24,25
 
|-
 
| L21
 
| Swing (Introduction to Swing, Swing vs. AWT, Hierarchy for Swing components, Creating GUI applications using Swing)
 
| Online Tutorial
 
| Chapter 31
 
Read about Swing form [https://www.javatpoint.com/java-swing]
 
 
|}
 
|}
  
 
== Assignments and Tests==
 
== Assignments and Tests==
 
===Assignments===
 
===Assignments===
*A1
+
* ''Assignment No. 1'', Posted on Google Classroom, '''Submission Deadline:''' 30/09/2020
*A2
+
* ''Assignment No. 2'', Posted on Google Classroom, '''Submission Deadline:''' 02/11/2020
*A3
 
* Assignments(A1,A2,A3) Submission deadline is 20th April, 2020.
 
  
 
===Tests===
 
===Tests===
* T1
+
* Test 1, 25/09/2020.
* T2
+
* Test 2, 23/10/2020.
* T3
+
* Test 3, 21/11/2020.
  
 
== Resources ==
 
== Resources ==
* ['''Reference Book''']: Herbert Schildt, The Complete Reference, 9th Edition, MGH Education (India).
+
* '''R1''': Aho, A., Lam, M., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools. 2nd edition. Addison Wesley.
* ['''Web:'''The Java™ Tutorials] https://docs.oracle.com/javase/tutorial/
+
* '''R2''': Chattopadhyaya, S. (2011). System Software. P H I Learning.
* ['''Web:''' GeeksforGeeks ] https://www.geeksforgeeks.org/java/
+
* '''Additional R1''': Beck, L. & Manjula, D. (1996). System Software: An Introduction to System Programming. 3rd edition. Pearson Education.
* ['''Web:''' Java T Point Tutorial ] https://www.javatpoint.com/java-tutorial
+
* '''Additional R2''': Dhamdhere, D. M. (2015). Systems Programming. Tata McGrawHill.

Latest revision as of 02:33, 18 September 2021

Logistics

  • Class Timings: Mondays(4th and 5th slot), Wednesdays(1st,2nd slot),
  • Classroom: Online
  • Lab Timings:Wednesdays(3rd slot),Fridays(1st slot) Saturdays(2nd,3rd slot)

Course Overview

Lectures

Date Topic Lecture Slides [ppt/pdf] Readings
Wed 19/08 Introduction to System Software, System Software and Machine Architecture, The Simplified Instructional Computer(SIC). 0.pdf Chapter 1 (Additional R1)
Mon 24/08, Wed 26/08, Fri 28/08 Assemblers: Introduction to Assembler. A Simple Manual Assembler. Assembler Design Process: (1) Major Data Structures used (Machine Opcode Table, Pseudo Opcode Table, Symbol Table), (2) Two-pass Assembler, (3) Single-pass Assembler. Load-and-go Assemblers, Object file formats. Assemblers.pdf Chapter 3 (R2)
Mon 31/08, Wed 02/09, Mon 07/09 Linkers and Loaders:Introduction to Linking, Static vs. Dynamic Linking, Combining Object Modules, Pass I of Linking, Pass II of Linking, Algorithm for Pass II. LIbrary Linking. Position Independent Code. Shared Library Linking. Loader: Binary Image, Types of Loaders. LinkerNLoader.pdf Chapter 4 (R2)
Wed 09/09, Fri 11/09 Introduction to Compilers, Language Processors. The Structure of a Compiler, Phases of a Compiler. Intro2Compilers.pdf

Translation Phase.jpg

Chapter 1 (R1)
Mon 14/09, Sat 19/09, Mon 21/09, Wed 23/09 Lexical Analysis:

(1) Role of Lexical Analyzer - Lexical Analysis vs. Parsing. Tokens, Patterns, and Lexemes. Attributes for Tokens. Lexical Error.
(2) Specification of Tokens-Symbols, Alphabets, Strings(Terms for Parts of Strings), Languages(Operations on Languages). Regular Expressions (Algebraic Laws), Regular Definitions, Extensions of Regular Expressions.
(3) Recognition of Tokens, Transition Diagrams, Implementation of Transition Diagrams.
(4) Symbol Table (discussed several times).
(5) Lexical Analyzer Generatror - Lex (self study from reference book, covered and discusses from course wiki)

LA.pdf Chapter 3 (R1)
# Fri 25/09 TEST 1, Syllabus (1) Introduction to System Softwares, (2) Assemblers, (3)Linker and Loader, (4) Introduction to Compilers
Wed 30/09, Mon 05/10, Fri 09/10, Wed 14/10, Fri 16/10, Mon 19/10, Wed 21/10, Mon 26/10 Syntax Analysis:

(1) Role of Syntax Analyzer.
(2) Context Free Grammars(CFGs), Derivations, Parsing(online content).
(3) Bottom-up Parsing - Reductions, Handle and Handle Pruning, Shift-Reduce Parsing, Conflicts during Shift-Reduce Parsing(shift/reduce or reduce/reduce)
(4) LR Parsing: Types of LR Parsers - LR(0), SLR(1), CLR(1), LALR(1). First and Follow in Parsing is also discussed since their concepts are used in Parsers.
(5) YACC - The Parser Generator.

SA.pdf
HWnotes1.pdf
HWnotes2.pdf
Chapter 4 (R1)
# Fri 23/10 TEST 2, Syllabus Test 1 + Lexical Analysis.
SDT Syntax Directed Translations:

(1) Syntax Directed Definition.
(2) Synthesized attrributes and Inherited attributes.
(3) S-Attributed SDD and L-Attributed SDD.
(4) Parse Tree, Annotated Parse Tree.
(5) Examples of SDD/SDT - A Simple Desk Calculator, Simple Type Declarations. (6) Dependency Graph, Ordering of evaluation of attributes, etc.

SDT.pdf Chapter 5 (R1)
TAC Three Address Code: (1) Quadruple, (2) Triple, (3) Indirect Triple, (4) Three Address Instruction forms, (5) Some examples.. TAC.pdf Chapter 6 (R1)
# Sat 21/11 TEST 3, Syllabus Syntax Analysis.
ICG (remaing part) Types and Declarations, Translation of Expressions, Type Checking, Control Flow 6.3.pdf Scribe: Tanya Gupta
6.4and6.5.pdf Scribe: Prakriti, Pratika, Vivek, Namanpreet
6.6.pdf Scribe: Anshika, Bhumi, Chirag, Ashwin
Chapter 6 (R1)
RTE Run-time Environment:(1) Strorage Organization, (2) Activation Records, (3) Activation Trees, (4) Sub-division of run-time memory. RTE.pdf Chapter 7 (R1)
CG Code Generation:(1) Position of Code Generator, (2) Issues in the design of Code Generator, (3) The Target Lanuage CG.pdf Chapter 8 (R1)

Assignments and Tests

Assignments

  • Assignment No. 1, Posted on Google Classroom, Submission Deadline: 30/09/2020
  • Assignment No. 2, Posted on Google Classroom, Submission Deadline: 02/11/2020

Tests

  • Test 1, 25/09/2020.
  • Test 2, 23/10/2020.
  • Test 3, 21/11/2020.

Resources

  • R1: Aho, A., Lam, M., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools. 2nd edition. Addison Wesley.
  • R2: Chattopadhyaya, S. (2011). System Software. P H I Learning.
  • Additional R1: Beck, L. & Manjula, D. (1996). System Software: An Introduction to System Programming. 3rd edition. Pearson Education.
  • Additional R2: Dhamdhere, D. M. (2015). Systems Programming. Tata McGrawHill.