Difference between revisions of "Fall 2021: System Programming"

From MKWiki
Jump to navigation Jump to search
 
(93 intermediate revisions by the same user not shown)
Line 5: Line 5:
  
 
== Course Overview ==
 
== Course Overview ==
* As per the [http://mkbhandari.com/mkwiki/data/summer2021/guidelines.pdf '''COURSE Guidelines''']
+
* As per the [http://cs.du.ac.in/uploads/ug_guidelines/BSc-H-CS/V/SysProg%20guidelines%20LOCF.pdf '''COURSE Guidelines''']
  
 
== Lectures ==
 
== Lectures ==
Line 15: Line 15:
 
!Readings
 
!Readings
 
|-
 
|-
| style="width: 5%" | Lecture 01 (01/04/21, 06/04/21)
+
| style="width: 10%" | Unit 01-Part 1 (22/07, 29/07, 04/08, 05/08, 11/08)
| style="width: 60%" |  <div style="text-align:justify"> '''''Introduction''''': History of Java, Java Features, First Sample Program, Java Virtual Machine(JVM) Architecture.</div>
+
| style="width: 60%" |  <div style="text-align:justify"> '''''Introduction to System Software''''': System Software and Machine 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.</div>
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/1Intro.pdf '''1.pdf''']
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/fall2021/SP/1Assembler.pdf '''1.pdf''']
| Chapter 1 (R1)
+
| style="width: 15%" |Chapter 3 (R1)
 
|-
 
|-
| Lecture 02 (08/04/21)
+
| style="width: 10%" | Unit 01-Part 2 (12/08, 19/08, 25/08, 02/09)
| '''''OOPs Principles''''': Object, Class, Encapsulation, Abstraction, Inheritance, Polymorphism.
+
| style="width: 60%" |  <div style="text-align:justify">'''Linkers and Loaders''':Introduction to '''Linking''', Static vs. Dynamic Linking, Combining Object Modules, '''Pass I of Linking, Pass II of Linking'''. LIbrary Linking. Position Independent Code. Shared Library Linking. '''Loader''': Binary Image, Types of Loaders.</div>
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/2OOPs.pdf '''2.pdf''']
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/fall2020/3LinkerLoader.pdf '''2.pdf''']
| Chapter 2 (R1)
+
| style="width: 15%" |Chapter 4 (R1)
 
|-
 
|-
| Lecture 03 (09/04/21, 13/04/21, 16/04/21, 20/04/21)
+
| style="width: 10%" | Unit 02 (08/09)
|  <div style="text-align:justify"> '''''Data Types, Variables, Arrays, Operators, Control Statements''''': The Primitive Data Types(Integers, Floating-Point Types, Characters, Booleans). Variables and their scope and lifetime. Type Conversion and Casting.  Arrays (One-dimensional Arrays, Multidimensional  Arrays) declaration, initialization, and usage. Operators (Arithmetic, Increment and Decrement, The Bitwise Operators, Compound Assignments, Relational Operators, Ternary Operator, Operator Precedence). Control Statemetns (Selection Statemetns-if, switch, Interation Statements - for, while, and do-while. The Enchanced For Loop (For-Each Loop). Jump Statements (break, continue, return). </div>
+
| style="width: 60%" |  <div style="text-align:justify">'''Introduction to Compilers''':Overview of compilation, Phases of a compiler </div>
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/3BBB.pdf '''3.pdf''']
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/fall2020/4IntroCompilers.pdf '''3.pdf''']  [http://mkbhandari.com/mkwiki/data/fall2020/TranslationPhase.png '''Example.jpg''']
| Chapter 3,4,5 (R1)
+
| style="width: 15%" |Chapter 1 (R2)
 
|-
 
|-
| Lecture 04 (22/04/21, 27/04/21)
+
| style="width: 10%" | Unit 03 (09/09, 15/09, 23/09)
|  <div style="text-align:justify"> '''''Introducing Classes''''': Class Fundamentals, Declaring Objects, Introducing Methods, Constructors(Default, No-argument, Parameterized), The ''this'' keyword, Garbage Collection, The ''finalize( )'' Method. </div>
+
| style="width: 60%" |  <div style="text-align:justify">'''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''' (self study from reference book). (5) '''Lexical Analyzer Generatror''' - Lex (self study from reference book, course wiki)</div>
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/4Intro2Classes.pdf '''4.pdf''']
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/fall2020/5LexicalAnalysis.pdf '''4.pdf''']
| Chapter 6 (R1)
+
| style="width: 15%" |Chapter 3 (R2)
 
|-
 
|-
| Test 1 (04/05/21)
+
| style="width: 10%" | Unit 04 (29/09, 06/10, 7/10, 20/10, 21/10, 23/10)
| colspan="3" | '''''Syllabus''''': Chapter 1 - Chapter 6, of the Referenc Book, as per the course guidelines.
+
| style="width: 60%" | <div style="text-align:justify">'''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) First and Follow in Parsing. (5) '''LR Parsing''': Types of LR Parsers - LR(0), SLR(1), CLR(1), LALR(1). (6) '''YACC''' - The Parser Generator.</div>
 +
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/fall2020/6SyntaxAnalysis(Partial).pdf '''5.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'''] <br><br> [http://mkbhandari.com/mkwiki/data/fall2021/SP/FirstNFollow.pdf  '''FirstNFollow.pdf'''] '''Scribe:''' Priya Singh
 +
| style="width: 15%" |Chapter 4 (R2)
 
|-
 
|-
| colspan="4" style="text-align: center; color: red;" |  Online Teaching suspended from May 4, 2021(afternoon) - May 16, 2021.
+
| style="width: 10%" | Unit 05 (26/10, 10/11)
 +
| style="width: 60%" |  <div style="text-align:justify">'''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.</div>
 +
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/fall2020/7SDT.pdf '''SDT.pdf''']<br>
 +
| style="width: 15%" |Chapter 5 (R2)
 
|-
 
|-
| Lecture 05 (18/05/21, 19/05/21, 28/05/21)
+
| style="width: 10%" | Unit 05 (11/11)
|  <div style="text-align:justify"> '''''A Closer Look at Methods and Classes''''': Overloading Methods, Automatic Type Conversions in Method Overloading. Overloading Constructors. Using Objects as Parameters. Copy Constructor. A Closer Look at Argument Passing(Call-by-Value, Call-by-Reference). Returning Objects. Recursion (Base Condition, Progressive Approach). Introducing Access Control (public, private, protected, default (package-private)). Understanding Static(static variable, methods, and blocks). Introducing Final. Nested and Inner Classes (how to define and use an inner class). Exploring the String Class. Using Command-Line Argument. Varargs: Variable-Length Arguments(self-study) </div>
+
| style="width: 60%" |  <div style="text-align:justify">Intermediate-Code Generation. Variants of Syntax Trees: Directed Acyclic Graphs('''DAGs''') for Expressions. '''Three Address Code''': (1) Quadruple, (2) Triple, (3) Indirect Triple, (4) Three Address Instruction forms, (5) Some examples..</div>
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/5CloserLook.pdf '''5.pdf''']
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/fall2021/SP/DAG.pdf '''DAG.pdf''']<br> [http://mkbhandari.com/mkwiki/data/fall2020/8TAC.pdf '''TAC.pdf''']
| Chapter 7 (R1)
+
| style="width: 15%" |Chapter 6 (R2)
 
|-
 
|-
| Lecture 06 (01/06/21, 03/06/21)
+
| style="width: 10%" | Unit 05 (Intermediate Code Generation Remaing Part)
|  <div style="text-align:justify"> '''''Inheritance''''': Inheritance Basics. Types of Inheritance in Java. A simple example of Inheritance(Single Inheritance). Member access and Inheritance, A more practical example. A Superclass Variable Can Reference a Subclass Object. Using '''''super'''''. Using Super to Call Superclass Constructors. Creating a Multilevel Hierarchy. When Constructors are Executed? Method Overriding. Method Overriding vs Overloading. Dynamic Method Dispatch. Why Overridden Methods? Applying Method Overriding. Using Abstract Classess. Using final with Inheritance. Using final to Prevent Overridding. The Object Class. </div>
+
| style="width: 60%" |  <div style="text-align:justify">Types and Declarations, Translation of Expressions, Type Checking, Control Flow</div>
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/6Inheritance.pdf '''6.pdf''']
+
| style="width: 15%" | [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 8 (R1)
+
| style="width: 15%" |Chapter 6 (R2)
 
|-
 
|-
| Lecture 07 (08/06/21, 09/06/21, 10/06/21)
+
| Unit 06 (RTE)
| <div style="text-align:justify"> '''''Packages and Interfaces''''': Introduction to Packages. Defining a Package. Package Example. Finding Packages and CLASSPATH. Access Protection. An Access Example. Importing Packages.  Introduction to Interfaces. Defining an Interface. Implementing Interfaces. Accessing Implementations Through Interface References. Partial Implementations. Nested Interfaces. Applying Interfaces. Variables in Interfaces. Extending Interfaces. Default Interface Methods. Multiple Inheritance Issues. static Methods in an Interface. </div>
+
| '''''Run-time Environment''''':(1) Strorage Organization, (2) Activation Records, (3) Activation Trees, (4) Sub-division of run-time memory.
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/7PKGInterface.pdf '''7.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/10RTE.pdf '''RTE.pdf''' ]  
| Chapter 9 (R1)
+
| Chapter 7 (R1)  
 
|-
 
|-
| Lecture 08 (23/06/21, 25/06/21)
+
| Unit 07 (CG)
| <div style="text-align:justify"> '''''Exception Handling''''': Exception Handling Fundamentals(five keywords:'''''try, catch, throw, throws, finally'''''). Exception Types. Uncaught Exception.Using try and catch. Displaying a Description of an Exception. Multiple catch Clauses. Nested try Statements. throw. throws. throw vs. throws. finally. final vs. finally vs. finalize. Java’s Built-in Exceptions. Hierarchy of Java Exception Classes. Creating your own Exception Subclass </div>
+
| '''''Code Generation''''':(1) Position of Code Generator, (2) Issues in the design of Code Generator, (3) The Target Lanuage
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/8ExceptionH.pdf '''8.pdf''']
+
| [http://mkbhandari.com/mkwiki/data/fall2020/11CodeGeneration.pdf '''CG.pdf''' ]  
| Chapter 10 (R1)
+
| Chapter 8 (R1)  
|-
 
| Lecture 09 (29/06/21)
 
|  <div style="text-align:justify"> '''''Java I/O and File Handling''''':  I/O Stream Basics, Byte Stream and Character Stream, The Predefined Stream, Reading Console Input, Writing Console Output, Reading and Writing Files, Try-with Resources [ Self Study ]</div>
 
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/9IOnFH.pdf '''9.pdf''']
 
| Chapter 13 (R1)
 
|-
 
| Lecture 10 (02/07/21,06/07/21, 09/07/21)
 
|  <div style="text-align:justify"> '''''Event Handling, Introducing the AWT: Working with Windows, Graphics and Text, Using AWT Controls, Layout Managers, and Menus''''': The AWT class hierarchy. The Delegation Event Model. Events, Event sources, Event classes, Event Listeners, Relationship between Event sources and Listeners. Creating GUI applications using AWT.</div>
 
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/summer2021/10EHnAWT.pdf '''10.pdf'''] + Book Reading + Online Tutorials.
 
| Chapter 24,25,26 (R1)
 
|-
 
| Lecture 11 (13/07/21,16/07/21)
 
|  <div style="text-align:justify"> '''''Introducing Swing, Exploring Swring''''': online</div>
 
| style="width: 15%" | Book Reading + Online Tutorials]
 
| Chapter 24,25,26 (R1)
 
 
 
 
|}
 
|}
  
 
== Assignments and Tests==
 
== Assignments and Tests==
 +
* ''Assignment No. 1(a)'', Explain the different object file formats. [12/08/2021]
 +
* ''Assignment No. 1(b)'', Explain the difference between compiler and interpreter. [ 08/09/2021]
 +
* ''Assignment No. 1(c)'', Question No. 4, DU Previous Year Question Paper (18th Dec 2020). [11/08/2021]
 +
* ''Assignment No. 1(d)'', Question No. 3, DU Previous Year Question Paper (23rd Dec 2020). [25/08/2021]
 +
* ''Assignment No. 1(e)'', Explain the different types of Language Processors with suitable examples/diagrams. [08/09/2021]
 +
<hr>
 +
'''Assignment No. 1, Submission Deadline: 25/09/2021'''
 +
<hr>
 +
* ''Assignment No. 2(a)'', Question No. 5, DU Previous Year Question Paper (23rd Dec 2020). [06/10/2021]
 +
* ''Assignment No. 2(b)'', Question No. 1, Unit-4(5.pdf, Slide no. 29). [07/10/2021]
 +
* ''Assignment No. 2(c)'', Question No. 2, Unit-4(5.pdf, Slide no. 29). [07/10/2021]
 +
* ''Assignment No. 2(d)'', Question No. 1, Unit-4(5.pdf, Slide no. 36). [07/10/2021]
 +
* ''Assignment No. 2(e)'', Question No. 2, Unit-4(5.pdf, Slide no. 36). [07/10/2021]
 +
<hr>
 +
'''Assignment No. 2, Submission Deadline: 31/10/2021'''
 +
<hr>
  
===Home Assignments===
+
== References/Resources ==
* ''Home Assignment (HA) No. 1'', Difference between JDK, JRE, and JVM. [06/04/2021]  <hr>
+
* '''R1''': Chattopadhyaya, S. (2011). System Software. PHI Learning. <br>
* ''Home Assignment (HA) No. 2(a)'', Difference between Procedure Oriented Programming(POPs) and Object Oriented Programming(OOPs). [08/04/2021]
+
* '''R2''': Aho, A., Lam, M., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools. 2nd edition. Addison Wesley.
* ''Home Assignment (HA) No. 2(b)'', Write some real life examples (pictorial representation) of OOPs. [08/04/2021] <hr>
+
* '''Additional R1''': Beck, L. & Manjula, D. (1996). System Software: An Introduction to System Programming. 3rd edition. Pearson Education.  
* ''Home Assignment (HA) No. 3(a)'', WAP to read n elements in an array and finally print them. [16/04/2021]
+
* '''Additional R2''': Dhamdhere, D. M. (2015). Systems Programming. Tata McGrawHill.
* ''Home Assignment (HA) No. 3(b)'', WAP to calculate the sum and average of elements in the array. [16/04/2021]
 
* ''Home Assignment (HA) No. 3(c)'', WAP to find the largest and smallest element in the array. [16/04/2021]
 
* ''Home Assignment (HA) No. 3(d)'', WAP to find/search an element in the array(using linear search). [16/04/2021]
 
* ''Home Assignment (HA) No. 3(e)'', WAP to sort the elements of an array(using bubble sort). [16/04/2021] <hr>
 
* ''Home Assignment (HA) No. 4(a)'', WAP to print the prime numbers form given input m to n. [20/04/2021]
 
* ''Home Assignment (HA) No. 4(b)'', WAP to generate the Fibonacci Series upto a given limit. [20/04/2021] <hr>
 
* ''Home Assignment (HA) No. 5'', WAP to create a Student class consisting of rollNo, name, course, and subjects as its instance variables. Demostrate in how many different ways you can initialize the objects of Student class. Finally display the objects as output of the program. [22/04/2021] <hr>
 
* ''Home Assignment (HA) No. 6'', WAP to demonstrate the use of garbage collector in Java [27/04/2021] <hr>
 
* ''Home Assignment (HA) No. 7(a)'', What are the different ways of method overloading in Java? What is method overloading with widening in Java. [31/05/2021]
 
* ''Home Assignment (HA) No. 7(b)'', WAP to find the sum of n natural numbers using recursion. [31/05/2021]
 
* ''Home Assignment (HA) No. 7(c)'', WAP to find reversre a string using recursion. [31/05/2021]
 
* ''Home Assignment (HA) No. 7(d)'', WAP to count the number of objects created from a class. [31/05/2021]
 
* ''Home Assignment (HA) No. 7(e)'', WAP to demonstrate the different string handling methods in java. [31/05/2021] <hr>
 
* ''Home Assignment (HA) No. 8(a)'', '''Prepare 10 important questions from the Lecture 6. It should reflect your understanding about the topic. Avoid discussing with your friends. It may reduce your score if similarities are found.'''  [05/06/2021]
 
* ''Home Assignment (HA) No. 8(b)'', '''Answer the questions prepared in 8(a).''' [05/06/2021] <hr>
 
* ''Home Assignment (HA) No. 9(a)'', Generate 5-10 errrors from the Lecture 07 ppt sample programs. The errors should be related to the concepts of inheritance, packages, and interfaces. [14/06/2021]
 
* ''Home Assignment (HA) No. 9(b)'', WAP to demonstrate how to achieve multiple inheritance in Java. [14/06/2021]
 
 
 
===Class Assignments===
 
* ''Assignment No. 1'', Posted on Google Classroom, '''Submission Deadline:''' 20/05/2021
 
* ''Assignment No. 2'', Posted on Google Classroom, '''Submission Deadline:''' 20/06/2021
 
 
 
===Tests and Quizes===
 
* Test 1, will be held on 04/05/2021. The Syllabus for Test 1 will be upto Chapter 6 + Class Assignment no. 1.
 
* Quiz 1, **/**/2021.
 
* Test 2, will be held on 02/07/2021. The Syllabus for Test 2 will be from Chapter 7-10 + Class Assignment no. 2.
 
* Quiz 2, **/**/2021.
 
 
 
== Resources ==
 
* '''R1''': Schildt, H. (2018). Java: The Complete Reference. 10th edition. McGraw-Hill Education. <br>
 
* '''Additional R1''': Balaguruswamy, E. (2014). Programming with JAVA: A Primer. 5th edition. India: McGraw Hill Education.
 
* '''Additional R2''': Horstmann, C. S. (2017). Core Java - Vol. I – Fundamentals (Vol. 10). Pearson Education.
 
* '''Additional R3''': Schildt, H., & Skrien, D. (2012). Java Fundamentals - A Comprehensive Introduction. India: McGraw Hill Education. <br>
 
* '''Web 1:''' The Java™ Tutorials [https://docs.oracle.com/javase/tutorial/]
 
* '''Web 2:''' Java T Point Tutorial  [https://www.javatpoint.com/java-tutorial]
 
* '''Web 3:''' NTU notes on Java [https://www3.ntu.edu.sg/home/ehchua/programming/index.html#Java]
 
  
== Course Running Status (Completed)==
+
== Course Running Status (~100%)==
 
{| class="wikitable" style="text-align:left; "
 
{| class="wikitable" style="text-align:left; "
 
|-
 
|-
Line 129: Line 98:
 
!Remarks
 
!Remarks
 
|-
 
|-
| 1
+
| 1/Ch3(R1)
| The History and Evolution of Java
+
| Assemblers
| Completed
 
| 06/04/2021
 
|-
 
| 2
 
| An Overview of Java
 
| Completed
 
| 08/04/2021
 
|-
 
| 3
 
| Data Types, Variables and Arrays
 
| Completed
 
| 13/04/2021
 
|-
 
| 4
 
| Operators
 
| Completed
 
| 16/04/2021
 
|-
 
| 5
 
| Control Statements
 
 
| Completed
 
| Completed
| 20/04/2021
+
| 11/08/2021
 
|-
 
|-
| 6
+
| 1/Ch4(R1)
| Introducing Classes
+
| Linkers and Loaders
 
| Completed
 
| Completed
| 27/04/2021
+
| 25/08/2021
 
|-
 
|-
| 7
+
| 2/Ch1(R2)
| A Closer Look at Methods and Classes
+
| Introduction to Compilation
 
| Completed
 
| Completed
| 28/05/2021
+
| 08/09/2021
 
|-
 
|-
| 8
+
| 3/Ch3(R2)
| Inheritance
+
| Lexical Analysis
 
| Completed
 
| Completed
| 03/06/2021
+
| 23/09/2021
 
|-
 
|-
| 9
+
| 4/Ch4(R2)
| Packages and Interfaces
+
| Syntax Analysis
 
| Completed
 
| Completed
| 10/06/2021
+
| 23/10/2021
 
|-
 
|-
| 10
+
| 5/Ch5(R2)
| Exception Handling
+
| Syntax Directed Translation
 
| Completed
 
| Completed
| 25/06/2021
+
| 10/11/2021
 
|-
 
|-
| 11
+
| 5/Ch6(R2)
| IO and File Handling
+
| Directed Acyclic Graph(DAG), Three Address Code(TAC)
 
| Completed
 
| Completed
| 29/06/2021
+
| 11/11/2021
 
|-
 
|-
| 12
+
| 6/Ch7(R2)
| Event Handling and AWT
+
| Run Time Environment
 
| Completed
 
| Completed
| 09/07/2021
+
| 15/11/2021
 
|-
 
|-
| 13
+
| 7/Ch8(R2)
| Introducing Swing, Exploring Swing
+
| Code Generation
 
| Completed
 
| Completed
| 16/07/2021
+
| 15/11/2021
 
|}
 
|}

Latest revision as of 00:36, 17 November 2021

Logistics

  • Class Timings: Wednesdays and Thursdays 10:45 am - 12:45 pm (3rd and 4th slot)
  • Classroom: Online
  • Lab Timings: Tuesdays 1:00 pm - 5:00 pm (5th - 8thslot)

Course Overview

Lectures

Lecture Topic Lecture Slides Readings
Unit 01-Part 1 (22/07, 29/07, 04/08, 05/08, 11/08)
Introduction to System Software: System Software and Machine 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.
1.pdf Chapter 3 (R1)
Unit 01-Part 2 (12/08, 19/08, 25/08, 02/09)
Linkers and Loaders:Introduction to Linking, Static vs. Dynamic Linking, Combining Object Modules, Pass I of Linking, Pass II of Linking. LIbrary Linking. Position Independent Code. Shared Library Linking. Loader: Binary Image, Types of Loaders.
2.pdf Chapter 4 (R1)
Unit 02 (08/09)
Introduction to Compilers:Overview of compilation, Phases of a compiler
3.pdf Example.jpg Chapter 1 (R2)
Unit 03 (09/09, 15/09, 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 (self study from reference book). (5) Lexical Analyzer Generatror - Lex (self study from reference book, course wiki)
4.pdf Chapter 3 (R2)
Unit 04 (29/09, 06/10, 7/10, 20/10, 21/10, 23/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) First and Follow in Parsing. (5) LR Parsing: Types of LR Parsers - LR(0), SLR(1), CLR(1), LALR(1). (6) YACC - The Parser Generator.
5.pdf
HWnotes1.pdf
HWnotes2.pdf

FirstNFollow.pdf Scribe: Priya Singh
Chapter 4 (R2)
Unit 05 (26/10, 10/11)
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 (R2)
Unit 05 (11/11)
Intermediate-Code Generation. Variants of Syntax Trees: Directed Acyclic Graphs(DAGs) for Expressions. Three Address Code: (1) Quadruple, (2) Triple, (3) Indirect Triple, (4) Three Address Instruction forms, (5) Some examples..
DAG.pdf
TAC.pdf
Chapter 6 (R2)
Unit 05 (Intermediate Code Generation 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 (R2)
Unit 06 (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)
Unit 07 (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

  • Assignment No. 1(a), Explain the different object file formats. [12/08/2021]
  • Assignment No. 1(b), Explain the difference between compiler and interpreter. [ 08/09/2021]
  • Assignment No. 1(c), Question No. 4, DU Previous Year Question Paper (18th Dec 2020). [11/08/2021]
  • Assignment No. 1(d), Question No. 3, DU Previous Year Question Paper (23rd Dec 2020). [25/08/2021]
  • Assignment No. 1(e), Explain the different types of Language Processors with suitable examples/diagrams. [08/09/2021]

Assignment No. 1, Submission Deadline: 25/09/2021


  • Assignment No. 2(a), Question No. 5, DU Previous Year Question Paper (23rd Dec 2020). [06/10/2021]
  • Assignment No. 2(b), Question No. 1, Unit-4(5.pdf, Slide no. 29). [07/10/2021]
  • Assignment No. 2(c), Question No. 2, Unit-4(5.pdf, Slide no. 29). [07/10/2021]
  • Assignment No. 2(d), Question No. 1, Unit-4(5.pdf, Slide no. 36). [07/10/2021]
  • Assignment No. 2(e), Question No. 2, Unit-4(5.pdf, Slide no. 36). [07/10/2021]

Assignment No. 2, Submission Deadline: 31/10/2021


References/Resources

  • R1: Chattopadhyaya, S. (2011). System Software. PHI Learning.
  • R2: Aho, A., Lam, M., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools. 2nd edition. Addison Wesley.
  • 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.

Course Running Status (~100%)

Unit/Chapter Topic Status Remarks
1/Ch3(R1) Assemblers Completed 11/08/2021
1/Ch4(R1) Linkers and Loaders Completed 25/08/2021
2/Ch1(R2) Introduction to Compilation Completed 08/09/2021
3/Ch3(R2) Lexical Analysis Completed 23/09/2021
4/Ch4(R2) Syntax Analysis Completed 23/10/2021
5/Ch5(R2) Syntax Directed Translation Completed 10/11/2021
5/Ch6(R2) Directed Acyclic Graph(DAG), Three Address Code(TAC) Completed 11/11/2021
6/Ch7(R2) Run Time Environment Completed 15/11/2021
7/Ch8(R2) Code Generation Completed 15/11/2021