Difference between revisions of "Spring 2021: Programming in Java (PSCS)"

From MKWiki
Jump to navigation Jump to search
 
(30 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== Logistics ==
 
== Logistics ==
*Class Timings: '''Tuesdays'''(5<sup>th</sup> and 6<sup>th</sup> slot)
+
*Class Timings: '''Tuesdays''' 1:00 pm - 3:00 pm (5<sup>th</sup> and 6<sup>th</sup> slot)
 
*Classroom: Online
 
*Classroom: Online
*Lab Timings:'''Mondays'''(1<sup>st</sup>-4<sup>th</sup>slot)
+
*Lab Timings: '''Mondays''' (8:45 am - 12:45 pm (1<sup>st</sup> to 4<sup>th</sup>slot)
  
 
== Course Overview ==
 
== Course Overview ==
* As per the [http://mkbhandari.com/mkwiki/data/fall2020/spSyllabus.pdf '''COURSE Guidelines''']
+
* As per the '''COURSE Guidelines''', yet to be finalized.
  
 
== Lectures ==
 
== Lectures ==
 
{| class="wikitable" style="text-align:left; width: 100%";  
 
{| class="wikitable" style="text-align:left; width: 100%";  
 
|-
 
|-
!Date
+
!Lecture
 
!Topic
 
!Topic
!Lecture Slides [ppt/pdf]
+
!Lecture Slides
 
!Readings
 
!Readings
 
|-
 
|-
| style="width: 8%" | Wed 19/08
+
| style="width: 8%" | Lecture 01 (Jan 05)
| style="width: 58% | '''''Introduction to System Software''''', System Software and Machine Architecture, The Simplified Instructional Computer(SIC).
+
| style="width: 60% | '''''Introduction''''': History of Java, Java Features, First Sample Program, Java Virtual Machine(JVM) Architecture.
| style="width: 17%" | [http://mkbhandari.com/mkwiki/data/fall2020/1IntroSS.pdf '''0.pdf''']
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/spring2021/Java(PSCS)/1Intro.pdf '''1.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.
 
| [http://mkbhandari.com/mkwiki/data/fall2020/2Assembler.pdf '''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.
 
| [http://mkbhandari.com/mkwiki/data/fall2020/3LinkerLoader.pdf '''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'''.
 
| [http://mkbhandari.com/mkwiki/data/fall2020/4IntroCompilers.pdf '''Intro2Compilers.pdf'''] 
 
[http://mkbhandari.com/mkwiki/data/fall2020/TranslationPhase.png '''Translation Phase.jpg''']
 
 
| Chapter 1 (R1)
 
| Chapter 1 (R1)
 
|-
 
|-
| Mon 14/09, Sat 19/09, Mon 21/09, Wed 23/09
+
| Lecture 02 (Jan 12)
| '''''Lexical Analysis''''': <br>
+
| '''''OOPs Principles''''': Object, Class, Encapsulation, Abstraction, Inheritance, Polymorphism.
(1) '''Role of Lexical Analyzer''' - Lexical Analysis vs. Parsing. Tokens, Patterns, and Lexemes. Attributes for Tokens. Lexical Errror. <br>
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/spring2021/Java(PSCS)/2OOPs.pdf '''2.pdf''']
(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>
+
| Chapter 2 (R1)
(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)
 
|-
 
| # Fri 25/09
 
| colspan="3" | '''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
+
| Lecture 03 (Jan 19, Feb 01)
| '''''Syntax Analysis''''':<br>
+
| ''''' Java Programming Fundamentals''''': Data Types, Variables, Operators, Keywords, Naming Convention, Decision Making(if, switch), Looping(for, while), Type Casting.
(1) Role of Syntax Analyzer. <br>
+
| style="width: 15%" | Read/Download Lecture 03 from [http://www.mkbhandari.com/mkwiki/Spring_2020:_Programming_in_Java]
(2) Context Free Grammars(CFGs), Derivations, Parsing(online content). <br>
+
| Chapter 3,4,5 (R1)
(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)
 
 
|-
 
|-
| # Fri 23/10
+
| Lecture 04 (Feb 02)
| colspan="3" | '''TEST 2''', Syllabus Test 1 + Lexical Analysis.
+
| ''''' Classes and Objects''''': Creating Classes and objects, Constructors(default, no-parameter, parameterized, ''this'' keyword, etc
|-
+
| style="width: 15%" | [http://mkbhandari.com/mkwiki/data/spring2021/Java(PSCS)/4Classes.pdf '''4.pdf''']
| SDT
 
| '''''Syntax Directed Translations''''':<br>
 
(1) Syntax Directed Definition. <br>
 
(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)
 
|-
 
| TAC
 
| '''''Three Address Code''''': (1) Quadruple, (2) Triple, (3) Indirect Triple, (4) Three Address Instruction forms,  (5) Some examples..
 
| [http://mkbhandari.com/mkwiki/data/fall2020/8TAC.pdf '''TAC.pdf''']
 
 
| Chapter 6 (R1)
 
| Chapter 6 (R1)
 
|-
 
|-
| # Sat 21/11
+
| Lecture 05 (Feb 09)
| colspan="3" | '''TEST 3''', Syllabus Syntax Analysis.
+
| ''''' Inheritance''''': Inheritance basics, ...
|-
+
| style="width: 15%" | Read/Download Lecture 10 from [http://www.mkbhandari.com/mkwiki/Spring_2020:_Programming_in_Java]
| ICG (remaing part)
+
| Chapter 8 (R1)
| Types and Declarations, Translation of Expressions, Type Checking, Control Flow
 
| [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 6 (R1)
 
|-
 
| RTE
 
| '''''Run-time Environment''''':(1) Strorage Organization, (2) Activation Records, (3) Activation Trees, (4) Sub-division of run-time memory.
 
| [http://mkbhandari.com/mkwiki/data/fall2020/10RTE.pdf '''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
 
| [http://mkbhandari.com/mkwiki/data/fall2020/11CodeGeneration.pdf '''CG.pdf''' ]  
 
| Chapter 8 (R1)  
 
 
|}
 
|}
  
 
== Assignments and Tests==
 
== Assignments and Tests==
===Assignments===
+
 
* ''Assignment No. 1'', Posted on Google Classroom, '''Submission Deadline:''' 30/09/2020
+
===Home Assignments===
* ''Assignment No. 2'', Posted on Google Classroom, '''Submission Deadline:''' 02/11/2020
+
* ''Home Assignment (HA) No. 1'', Difference between JDK, JRE, and JVM. [12/01/2021]
 +
* ''Home Assignment (HA) No. 2'', Difference between C++ and Java. [02/02/2021]
 +
* ''Home Assignment (HA) No. 3'', Difference between OOPs and POPs. [02/02/2021]
 +
 
 +
===Class Assignments===
 +
* ''Assignment No. 1'', Posted on Google Classroom, '''Submission Deadline:''' **/**/2021
 +
* ''Assignment No. 2'', Posted on Google Classroom, '''Submission Deadline:''' **/**/2021
 +
* ''Assignment No. 3'', Posted on Google Classroom, '''Submission Deadline:''' **/**/2021
  
 
===Tests===
 
===Tests===
* Test 1, 25/09/2020.
+
* Test 1, **/**/2021.
* Test 2, 23/10/2020.
+
* Test 2, **/**/2021.
* Test 3, 21/11/2020.
+
* Test 3, **/**/2021.
  
 
== Resources ==
 
== Resources ==
* '''R1''': Aho, A., Lam, M., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools. 2nd edition. Addison Wesley.
+
* '''R1''': Herbert Schildt, The Complete Reference, 9th Edition, MGH Education (India). ['''''Tentative''''']
* '''R2''': Chattopadhyaya, S. (2011). System Software. P H I Learning.
+
* '''Web 1:''' The Java™ Tutorials [https://docs.oracle.com/javase/tutorial/]
* '''Additional R1''': Beck, L. & Manjula, D. (1996). System Software: An Introduction to System Programming. 3rd edition. Pearson Education.
+
* '''Web 2:''' Java T Point Tutorial  [https://www.javatpoint.com/java-tutorial]
* '''Additional R2''': Dhamdhere, D. M. (2015). Systems Programming. Tata McGrawHill.
+
* '''Web 3:''' NTU notes on Java [https://www3.ntu.edu.sg/home/ehchua/programming/index.html#Java]

Latest revision as of 17:27, 23 April 2021

Logistics

  • Class Timings: Tuesdays 1:00 pm - 3:00 pm (5th and 6th slot)
  • Classroom: Online
  • Lab Timings: Mondays (8:45 am - 12:45 pm (1st to 4thslot)

Course Overview

  • As per the COURSE Guidelines, yet to be finalized.

Lectures

Lecture Topic Lecture Slides Readings
Lecture 01 (Jan 05) Introduction: History of Java, Java Features, First Sample Program, Java Virtual Machine(JVM) Architecture. 1.pdf Chapter 1 (R1)
Lecture 02 (Jan 12) OOPs Principles: Object, Class, Encapsulation, Abstraction, Inheritance, Polymorphism. 2.pdf Chapter 2 (R1)
Lecture 03 (Jan 19, Feb 01) Java Programming Fundamentals: Data Types, Variables, Operators, Keywords, Naming Convention, Decision Making(if, switch), Looping(for, while), Type Casting. Read/Download Lecture 03 from [1] Chapter 3,4,5 (R1)
Lecture 04 (Feb 02) Classes and Objects: Creating Classes and objects, Constructors(default, no-parameter, parameterized, this keyword, etc 4.pdf Chapter 6 (R1)
Lecture 05 (Feb 09) Inheritance: Inheritance basics, ... Read/Download Lecture 10 from [2] Chapter 8 (R1)

Assignments and Tests

Home Assignments

  • Home Assignment (HA) No. 1, Difference between JDK, JRE, and JVM. [12/01/2021]
  • Home Assignment (HA) No. 2, Difference between C++ and Java. [02/02/2021]
  • Home Assignment (HA) No. 3, Difference between OOPs and POPs. [02/02/2021]

Class Assignments

  • Assignment No. 1, Posted on Google Classroom, Submission Deadline: **/**/2021
  • Assignment No. 2, Posted on Google Classroom, Submission Deadline: **/**/2021
  • Assignment No. 3, Posted on Google Classroom, Submission Deadline: **/**/2021

Tests

  • Test 1, **/**/2021.
  • Test 2, **/**/2021.
  • Test 3, **/**/2021.

Resources

  • R1: Herbert Schildt, The Complete Reference, 9th Edition, MGH Education (India). [Tentative]
  • Web 1: The Java™ Tutorials [3]
  • Web 2: Java T Point Tutorial [4]
  • Web 3: NTU notes on Java [5]