• This course introduces the different software process models by illustrating its phases and principles of software engineering. Topics include: Overview of Software Engineering; Software Process Models; Requirement Engineering Concepts; Software Design; Design Modeling; Software Quality Engineering;

      Software Project Management; Software Maintenance and Software Evolution.

      • Software Engineering Software Engineering
    • I have completed MIT from the University of the Punjab, Gujranwala Campus majoring in Web and Database management systems and MS from COMSATS Lahore majoring in Software Project Management and PhD in Software Engineering majoring in Web Services and Code Anomaly Detection. I have completed Industrial Postdoc major in IoT systems and Feature identification for distributed software systems running in the Montreal Hospital, Canada. 

Available courses

This course introduces the different software process models by illustrating its phases and principles of software engineering. Topics include: Overview of Software Engineering; Software Process Models; Requirement Engineering Concepts; Software Design; Design Modelling; Software Quality Engineering; Software Project Management; Software Maintenance and Software Evolution.

Artificial Intelligence (AI) is the study that enables us to make machines behave somewhat like human beings, i.e., they can perceive new stimuli from their environments, and can make intelligent decisions that lead to rational actions by them.

In this course, we first try to create an interest in this field within students and try to show how this field has roots in various branches of knowledge such as psychology, philosophy, economics, math, and many others. We try to develop an understanding of basic search techniques, both uninformed and informed (heuristic-based) search techniques. We then try to introduce students to basic concepts related to games and adversarial search (mostly related to deterministic games). After that we build on concepts related to constraint satisfaction, using examples like map colouring to explain the basic concepts. We then move on to first-order logic, then decision trees for classification and concepts related to machine learning. This course aims to:

a) To appreciate the origins of the field of AI, along with some major milestones in this field of AI over the years.

b) To understand the basics of informed and uninformed search strategies, and why sometimes there is a tradeoff between memory requirements and performance.

c) To understand basic constraint satisfaction problems, and how to solve them.

d) To provide an initial understanding of fields such as classification and regression, first-order logic and machine learning.

Course Description:

Effective deployment of machine learning models requires competencies in software engineering and DevOps. Machine Learning Operations (MLOps) is a course that covers building and maintaining integrated ML-based systems that continuously operate in production while handling evolving data and producing maximum performance at minimum cost. The course teaches well-established tools and methodologies for DevOps and MLOps.

Goals and Objectives:

Upon completing this course, students will gain an understanding of the capabilities, challenges, and implications of deploying machine learning models in a production environment. This will prepare students to apply newly acquired production-ready skills to contribute to developing cutting-edge AI technology to solve real-world problems.

Grading Scheme/Criteria:

Project/Assignments: 20%

Quizzes: 5%

Midterm Exam: 35%

Final: 40%

Introduction to Problem Solving, Algorithms, Programming, and C Language: Problem Solving, a brief review of Von-Neumann Architecture., The C Programming Language, Pseudocode, Concept of Variable, Data types in Pseudo-code, The C Standard Library and Open Source, Input/Output, Arithmetic expressions, Assignment statement, Operator precedence, Concept of Integer division, Flowchart and its notations, Typical C Program Development Environment, Role of Compiler and Linker, Test Driving C Application. Introduction to C Programming: A Simple C Program: Printing Text, Adding Two Integer, Memory Concepts, Arithmetic in C, Operators. Decision Making: Equality and Relational Operators. Structured Program Development: The if, if…else, while Nested Control Statements. Program Control: for, switch, do…while, break, continue, Logical Operators. Functions: Modularizing Program in C, Math Library Functions, Function Definitions and Prototypes, Function-Call Stack and Stack Frames, Stack rolling and unrolling, Headers, Passing Arguments by Value and by Reference, Random Number Generation, Scope Rules, Recursion, Recursion vs Iteration. Arrays: Defining Arrays, Character Arrays, Static and Automatic Local Arrays, Passing Arrays to Function, Sorting and Searching Arrays, Multidimensional and Variable Length Arrays. Pointers: Pointer Definitions and Initialization, Pointer Operators, Passing Arguments to Function by Reference, Using the const and sizeof Operator, Pointer Expressions and Arithmetic, Pointers and Arrays, Array of Pointers, Function Pointers. Characters and Strings: Strings and Characters, Character Handling Library, String Functions, Library Functions. Formatted Input/Output: Streams, Formatted Output with printf, Formatted Input with scanf. Structures: Defining Structures, Accessing Structure Member, Structures and Functions, typedef, Unions. Bit Manipulation and Enumeration: Bitwise Operators, Bit Fields, Enumeration Constants. File Processing: Files and Streams, Creating, Reading and Writing data to a Sequential and a Random-Access File. Preprocessor: #include, #define, Conditional Compilation, #error and #pragma, # and ## Operators, Predefined Symbolic Constants, Assertions. Other Topics: Variable Length Argument List, Using Command Line Arguments, Compiling Multiple-Source-File Programs, Program Termination with exit and atexit, Suffixes for Integer and Floating-Point Literals, Signal Handling, Dynamic Memory Allocation calloc and realloc, goto. Advance Topics: SelfReferential Structures, Linked Lists. Efficiency of Algorithms, Selection and Insertion Sort

The Object-Oriented Programming (OOP) course introduces students to the fundamental concepts of object-oriented design and programming using languages such as Java, C++, or Python. The course covers key principles like encapsulation, inheritance, polymorphism, and abstraction, enabling students to build modular, reusable, and efficient software solutions. Students will learn how to design and implement classes, objects, constructors, and data structures, along with advanced topics such as exception handling, file handling, and design patterns. Through hands-on projects and assignments, students will develop real-world applications, enhancing their problem-solving and coding skills for software development careers.

The Data Structures and Algorithms (DSA) course provides a comprehensive understanding of fundamental data structures and algorithmic techniques essential for efficient problem-solving in computer science. Students will learn about arrays, linked lists, stacks, queues, trees, graphs, hash tables, and heaps, along with algorithmic paradigms such as recursion, sorting, searching, dynamic programming, and greedy algorithms. The course emphasizes time and space complexity analysis using Big-O notation to evaluate algorithm efficiency. Through hands-on coding exercises and projects, students will develop the skills needed to design and optimize algorithms for real-world applications, preparing them for software development, competitive programming, and technical interviews.