Software Engineering - Syllabus

Course Overview and Structure

Embark on a profound academic exploration as you delve into the Software Engineering course () within the distinguished Tribhuvan university's CSIT department. Aligned with the 2065 Syllabus, this course (CSC-351) seamlessly merges theoretical frameworks with practical sessions, ensuring a comprehensive understanding of the subject. Rigorous assessment based on a 60+20+20 marks system, coupled with a challenging passing threshold of , propels students to strive for excellence, fostering a deeper grasp of the course content.

This 3 credit-hour journey unfolds as a holistic learning experience, bridging theory and application. Beyond theoretical comprehension, students actively engage in practical sessions, acquiring valuable skills for real-world scenarios. Immerse yourself in this well-structured course, where each element, from the course description to interactive sessions, is meticulously crafted to shape a well-rounded and insightful academic experience.


Course Synopsis: Discussion on types of software, developing process and maintaining the software.
Goal: This course introduces concept of software development paradigm and implementing these in real world.

Units

Key Topics

  • Introduction to Software Engineering
    UN-SE-1

    Defining software and software engineering, and comparing it with other engineering disciplines.

  • System Engineering
    UN-SY-2

    Understanding systems, their properties, and environment, and modeling systems.

  • Software Process
    UN-SP-3

    Exploring software process models, iterations, specification, design, implementation, validation, and evolution.

  • Project Management
    UN-PM-4

    Introducing project management, including management activities, planning, scheduling, and risk management.

Key Topics

  • Lexical Analysis
    UN-2.1

    The process of breaking the source code into a series of tokens. It involves the specification and recognition of tokens, input buffer, and finite automata relevant to compiler construction.

  • Syntax Analysis
    UN-2.2

    The process of analyzing the syntax of the source code. It involves basic parsing techniques, problem of left recursion, left factoring, ambiguous grammar, top-down parsing, bottom-up parsing, and LR parsing.

  • Semantic Analysis
    UN-2.3

    The process of analyzing the meaning of the source code. It involves static and dynamic checks, typical semantic errors, scoping, type checking, syntax directed definitions, and translation.

Key Topics

  • Symbol Table Design
    UN-3.1

    Function of Symbol Table, Information provided by Symbol Table, Attributes and Data Structures for symbol table

  • Run-time Storage Management
    UN-3.2

    Managing storage during runtime

Key Topics

  • Intermediate Code Generation
    UN-4.1

    This topic covers the generation of intermediate code, including high-level and low-level representations, syntax trees, and three-address code. It also discusses the generation of intermediate code for declarations, assignments, control flow, boolean expressions, and procedure calls.

  • Code Generation
    UN-4.2

    This topic explores the factors affecting code generation, including target language, basic blocks, and flow graphs. It also covers dynamic programming code-generation algorithms.

  • Code Optimization
    UN-4.3

    This topic discusses the need and criteria for code optimization, as well as basic optimization techniques to improve code efficiency.

  • Compiler Case Studies
    UN-4.4

    This topic presents case studies of compilers, including C and C++ compilers, to illustrate the application of compiler design principles.

  • Testing the Backup and Recovery Plan
    UN-4.5

    Validating the effectiveness of a backup and recovery strategy through regular testing and simulation exercises.