Skip to content

Amey-Thakur/SYSTEM-PROGRAMMING-AND-COMPILER-CONSTRUCTION-AND-SYSTEM-SOFTWARE-LAB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

University of Mumbai

System Programming and Compiler Construction and System Software Laboratory

CSC602 & CSL602 · Semester VI · Computer Engineering

License: CC BY 4.0 University Institution Curated by

A comprehensive academic resource for System Programming and Compiler Construction (SPCC) and System Software Laboratory (SSL), covering language processors, assembler design, macro processors, linker/loader functionality, and compiler design phases.


Overview  ·  Contents  ·  Reference Books  ·  Personal Preparation  ·  Assignments  ·  Classwork  ·  Quizzes  ·  Laboratory  ·  Mock Test  ·  Internal Assessment Test  ·  Semester Exam  ·  Question Papers  ·  Submission Report  ·  Syllabus  ·  Usage Guidelines  ·  License  ·  About  ·  Acknowledgments


Overview

System Programming and Compiler Construction (CSC602) and System Software Lab (CSL602) are core subjects in the Third Year (Semester VI) of the Computer Engineering curriculum at the University of Mumbai. These courses provide a deep dive into the software that supports the execution of application software, including assemblers, loaders, linkers, and the various phases of a compiler.

Course Topics

The curriculum encompasses several key domains in System Programming and Compiler Construction:

  • Introduction to System Software: Language processors, fundamentals of language processing, data structures for language processing.
  • Assemblers: Design of one-pass and two-pass assemblers, symbol table management.
  • Macros and Macro Processors: Macro definition and expansion, nested macro calls, design of macro processors.
  • Linkers and Loaders: Basic functions, relocation and linking concepts, design of direct-linking loaders.
  • Compilers: Lexical analysis, syntax analysis (parsing techniques), intermediate code generation, and code optimization.
  • Compiler Construction Tools: Using LEX and YACC for developing scanners and parsers.

Repository Purpose

This repository represents a curated collection of study materials, reference books, lab experiments, and personal preparation notes compiled during my academic journey. The primary motivation for creating and maintaining this archive is simple yet profound: to preserve knowledge for continuous learning and future reference.

As a computer engineer, understanding how source code is transformed into executable machine instructions is fundamental. This repository serves as my intellectual reference point: a resource I can return to for relearning concepts, reviewing methodologies, and strengthening understanding when needed.

Why this repository exists:

  • Knowledge Preservation: To maintain organized access to comprehensive study materials beyond the classroom.
  • Continuous Learning: To support lifelong learning by enabling easy revisitation of fundamental system programming concepts.
  • Academic Documentation: To authentically document my learning journey through System Programming and Compiler Construction and System Software Laboratory.
  • Community Contribution: To share these resources with students and learners who may benefit from them.

Note

All materials in this repository were created, compiled, and organized by me throughout my undergraduate program (2018-2022) as part of my coursework, laboratory assignments, and project implementations.


Repository Contents

Reference Books

This collection includes comprehensive reference materials covering all major topics:

# Resource Focus Area
1 SPCC Techmax Complete syllabus coverage
2 SPCC - TechMax (Alt) Additional syllabus-oriented reference
3 SPCC Techmax (Full Title) Comprehensive Techmax guide
4 SPCC Reference Book Targeted reference material
5 System Programming by Donovan Classic textbook for system software
6 SPCC Easy Solutions Solved questions and exam-oriented summaries
7 SPCC - Easy Solutions Additional solved questions
8 SPCC Last Moment Tuitions Concise review for exam preparation
9 SPCC Question Bank Practice questions and important topics
10 SPCC - IMCQ Important MCQs for entrance and exams
11 SPCC VIVA Viva preparation guide
12 SPCC VIVA Questions Frequently asked viva questions
13 SPCC Presentation Linker and Loader presentation slides
14 BH Plan Study planning and strategy

Personal Preparation

Study materials and planning resources for effective exam preparation:

# Resource Description
1 Blueprint SPCC exam blueprint and marking scheme
2 Semester 6 Timetable Academic schedule for Semester VI
3 Computer Semester 6 Timetable Detailed computer engineering timetable

Assignments

Academic assignments for comprehensive learning and practice:

# Assignment Description Date Marks
1 Assignment 1 System Programming Fundamentals, Error Recovery, Operator Precedence, Code Optimization, DAG April 10, 2021 10/10
2 Assignment 2 Forward Reference, Assemblers (Pass-I & Pass-II), Loaders, Direct Linking, Macro Processors April 20, 2021 10/10
3 Assignment 3 Case Study on Compiler Construction Tools (LEX and YACC) April 30, 2021 10/10

Topics Covered: System Programming Fundamentals · Error Recovery Techniques · Operator Precedence Parsing · Code Optimization · DAG Representation · Forward Reference Problem · Assembler Pass-I and Pass-II · Loaders and Direct Linking · Macro Processors · Compiler Construction Tools (LEX and YACC)


Classwork

Important

🤝🏻 Special Acknowledgement

Special thanks to Mega Satish and Hasan Rizvi for their meaningful contributions, support, and wisdom that helped shape this work.

Presentation Overview

A comprehensive presentation on Linker and Loader covering the translation hierarchy and program execution flow in system software. The presentation explores:

  • Translation Hierarchy: Compiler, Assembler, and the flow from high-level language to machine code
  • Linker: A program that links and merges object files to create an executable, performing symbol resolution and determining memory locations
  • Loader: A program that loads linked modules into main memory for execution, replacing virtual addresses with physical addresses
  • Functions of Loader: Allocation, Linking, Relocation, and Loading
  • Loading Schemes: Compile & Go Loading Scheme vs General Loading Scheme
  • Types of Loaders: Absolute Loaders and Relocatable Loaders

Note

Research Impact: This presentation was published on ResearchGate and is available for academic reference.

Educational presentations and collaborative work:

# Resource Description
1 SPCC Presentation Linker & Loader architecture and functionality
2 PPTX Original presentation file (PowerPoint)
3 PDF Presentation document version

Quizzes

SPCC-specific quizzes conducted during the course:

# Quiz Topics Date Marks
1 Quiz 1 Introduction to System Softwares April 13, 2021 10/10
2 Quiz 2 Assemblers and Symbol Table Management 10/10
3 Quiz 3 Macro Processors, Linkers and Loaders 10/10
4 Quiz 4 Compilers - Lexical Analysis 10/10
5 Quiz 5 Compilers - Syntax Analysis and Parsing 10/10
6 Quiz 6 Compiler Construction and Optimization 10/10

System Software Laboratory

The laboratory component (CSL602) focuses on hands-on implementation of system software components including assemblers, lexical analyzers, and parsers using C and tools like LEX/YACC.

Total Experiments Status Language

Tip

Lab Concept: System software development requires a strong grasp of data structures like Symbol Tables and Literal Tables. When working with LEX and YACC, always ensure your regular expressions and grammars are well-tested before integration.

# Experiment Date Marks Report
1 Develop a program to implement lexical analyzer using Finite Automata February 05, 2021 9/10 View
2 Implement Lexical Analyzer for given language using Lex tool February 26, 2021 7/10 View
3 Implement program to remove left recursion from grammar and find first and follow March 05, 2021 8/10 View
4 Implement any parsing technique March 26, 2021 8/10 View
5 Implement any code optimization techniques March 30, 2021 8/10 View
6 Generate target code April 09, 2021 8/10 View
7 Design and implement first pass of a two pass assembler for IBM 360/370 Processor April 30, 2021 8/10 View
8 Design and implement second pass of a two pass assembler for IBM 360/370 Processor April 30, 2021 7/10 View
9 Design and Implement two pass Macro Processor May 07, 2021 8/10 View
10 Write a LEX-YACC specification program for 3-address intermediate code generation May 07, 2021 10/10 View

Program Details

Experiment 1: Lexical Analyzer using DFA (1 Program)
Program Category Description Code
DFA_Implementation.c Lexical Analysis Implementation of DFA-based lexical analyzer in C View
Experiment 2: Lexical Analyzer using LEX (3 Programs)
Program Category Description Code
Lex_Lexical_Analyzer.l LEX Tool Lexical analyzer specification using LEX View
Manual_Lexical_Analyzer.c Lexical Analysis Manual implementation of lexical analyzer in C View
sample_input.c Test Input Sample C program for testing lexical analyzer View
Experiment 3: FIRST and FOLLOW Sets (2 Programs)
Program Category Description Code
First_Follow_Implementation.c Parsing Implementation of FIRST and FOLLOW set calculation View
grammar.txt Input Data Grammar definition file for parsing View
Experiment 4: Recursive Descent Parser (1 Program)
Program Category Description Code
RD_Parser_Implementation.c Parsing Implementation of Recursive Descent Parser View
Experiment 5: Code Optimization (1 Program)
Program Category Description Code
Code_Optimization.c Optimization Implementation of code optimization techniques View
Experiment 6: Target Code Generation (1 Program)
Program Category Description Code
Target_Code_Generator.c Code Generation Implementation of target code generator View
Experiment 7: Assembler Pass-I (4 Programs)
Program Category Description Code
Assembler_Pass1.c Assembler Implementation of Pass-I of two-pass assembler View
INPUT.txt Input Data Assembly language input file View
OPTAB.txt Data Table Operation code table View
SYMTAB.txt Data Table Symbol table output View
Experiment 8: Assembler Pass-II (1 Program)
Program Category Description Code
Assembler_Pass2.c Assembler Implementation of Pass-II of two-pass assembler View
Experiment 9: Macro Processor (1 Program)
Program Category Description Code
Macro_Processor.c Macro Processing Implementation of two-pass Macro Processor View
Experiment 10: LEX-YACC Tools (2 Programs)
Program Category Description Code
Integer_Recognizer.l LEX Tool LEX specification for integer recognition View
Arithmetic_Counter.l LEX Tool LEX specification for arithmetic operations View

Laboratory Documentation

# Resource Description
1 Lab README Detailed navigation guide with program descriptions

Mock Test

Technical mock test conducted for placement preparation:

# Resource Description
1 Technical Mock Test Campus Corners Mock Test for Terna Engineering College

Internal Assessment Test

Internal assessment evaluations conducted during the course:

IAT - 1 · March 16, 2021

# Resource Description Marks
1 Question Paper SPCC Internal Assessment Test 1 Question Paper
2 Answer Sheet SPCC Internal Assessment Test 1 Answer Sheet 18/20
3 MCQ SPCC Internal Assessment Test 1 MCQ 10/10

IAT - 2

# Resource Description Marks
1 Answer Sheet SPCC Internal Assessment Test 2 Answer Sheet

Additional Resources:

# Resource Description
1 Answer Sheet Template IAT Answer Sheet Template

Semester Exam

Important

COVID-19 Impact: This coursework was completed during the COVID-19 pandemic. All examinations and assessments were conducted in a digital format.

Final semester examination submission:

# Resource Description Date
1 MCQ SPCC Semester Exam MCQ Paper June 04, 2021
2 Question 2 SPCC Semester Exam Answer Sheet June 04, 2021
3 Question 3 SPCC Semester Exam Answer Sheet June 04, 2021

Additional Resources:

# Resource Description
1 Answer Sheet Template Semester Exam Answer Sheet Template
2 SPCC Questions SPCC Exam Questions Document
3 Attendance Proof Exam Attendance (June 04, 2021 at 11:35 AM)
View Attendance Proof

Attendance Proof - June 04, 2021 at 11:35 AM


Question Papers

University of Mumbai examination papers from 2012-2019:

# Exam Session Syllabus Resource
1 May 2019 CBCGS View
2 December 2019 CBCGS View
3 May 2018 CBCGS View
4 December 2018 CBCGS View
5 May 2017 CBCGS View
6 December 2017 CBCGS View
7 May 2016 CBCGS View
8 December 2016 CBCGS View
9 May 2015 CBGS View
10 December 2015 CBGS View
11 May 2014 CBGS View
12 December 2014 CBGS View
13 May 2013 CBGS View
14 December 2013 CBGS View
15 May 2012 CBGS View
16 December 2012 CBGS View

Submission Completion Report

Course completion documentation:

# Document Description
1 Submission Report Final coursework submission report

Syllabus

Official CBCGS Syllabus
Complete Third Year Computer Engineering syllabus document from the University of Mumbai, including detailed course outcomes, assessment criteria, and module specifications for System Programming and Compiler Construction and System Software Laboratory.

Important

Always verify the latest syllabus details with the official University of Mumbai website, as curriculum updates may occur after this repository's archival date.


Usage Guidelines

This repository is openly shared to support learning and knowledge exchange across the academic community.

For Students
Use these resources as reference materials for understanding system software architecture, compiler phases, and preparing for examinations. All content is organized for self-paced learning.

For Educators
These materials may serve as curriculum references, lab examples, or supplementary teaching resources. Attribution is appreciated when utilizing content.

For Researchers
The documentation and organization may provide insights into academic resource curation and educational content structuring.


License

This repository and all linked academic content are made available under the Creative Commons Attribution 4.0 International License (CC BY 4.0). See the LICENSE file for complete terms.

Note

Summary: You are free to share and adapt this content for any purpose, even commercially, as long as you provide appropriate attribution to the original author.


About This Repository

Created & Maintained by: Amey Thakur
Academic Journey: Bachelor of Engineering in Computer Engineering (2018-2022)
Institution: Terna Engineering College, Navi Mumbai
University: University of Mumbai

This repository represents a comprehensive collection of study materials, reference books, assignments, and personal preparation notes curated during my academic journey. All content has been carefully organized and documented to serve as a valuable resource for students pursuing System Programming and Compiler Construction & System Software Laboratory.

Connect: GitHub  ·  LinkedIn  ·  ORCID

Acknowledgments

Grateful acknowledgment to Mega Satish for her exceptional support and collaboration during the laboratory experiments and classwork presentations of this course. Her constant support, patience, and clarity as we learned the fundamentals of System Programming and Compiler Construction together made a real difference. Working alongside her was truly enriching; her ability to simplify complex concepts and her steady encouragement turned challenging experiments into meaningful learning moments. This repository reflects the growth that came from our shared curiosity and mutual dedication to mastering the subject. Thank you, Mega, for being such an outstanding partner to learn with and for all the knowledge we shared along the way.

Grateful acknowledgment to Hasan Rizvi for his valuable contributions and support during the classwork presentations of this course. His insights and collaborative spirit made the learning process more engaging and effective. Working with Hasan brought fresh perspectives to complex topics, and his willingness to share knowledge and discuss ideas openly enriched the overall learning experience. Thank you, Hasan, for being such an outstanding partner to learn with and for all the knowledge we shared along the way.

Grateful acknowledgment to the faculty members of the Department of Computer Engineering at Terna Engineering College for their guidance and instruction in System Programming and Compiler Construction. Their clear teaching and continued support helped develop a strong understanding of language processors and system software.

Special thanks to the mentors and peers whose encouragement, discussions, and support contributed meaningfully to this learning experience.



Computer Engineering (B.E.) - University of Mumbai

Semester-wise curriculum, laboratories, projects, and academic notes.

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •