Courses Taught

Dr. Iqbal has been teaching a variety of undergraduate and graduate courses at NUST-SEECS, focusing on both theoretical foundations and practical applications in computer science.

Design and Analysis of Algorithms

Study of algorithm design techniques including divide-and-conquer, dynamic programming, greedy algorithms, and graph algorithms. Students learn to analyze time and space complexity, and develop problem-solving skills essential for software engineering and research.

Compiler Construction

Introduction to compiler design and implementation covering lexical analysis, parsing, syntax-directed translation, semantic analysis, and code generation. Students build a working compiler as a semester project.

Theory of Automata & Formal Languages

Mathematical foundations of computation including finite automata, regular expressions, context-free grammars, Turing machines, and the theory of NP-completeness. Essential background for theoretical computer science and algorithm design.

Mathematical Methods for Computing

Mathematical tools and techniques used in computer science including linear algebra, probability theory, statistics, and numerical methods. Bridges the gap between pure mathematics and its applications in computing.

Graph Theory and Algorithms

In-depth study of graph theory concepts and their algorithmic applications. Topics include graph traversal, shortest paths, network flow, matching, coloring problems, and approximation algorithms for NP-hard problems.

Discrete Mathematics

Fundamental mathematical structures including sets, relations, functions, logic, proof techniques, combinatorics, and discrete probability. Provides the mathematical foundation essential for all computer science study.

Fuzzy Controllers

Graduate-level course on fuzzy logic and fuzzy control systems. Students learn fuzzy set theory, fuzzy reasoning, and design of fuzzy controllers with applications in robotics, automotive systems, and industrial automation.

Formal Methods for Software Engineering

Application of mathematical methods to software design and development. Topics include specification languages, model checking, program verification, and formal testing techniques for producing reliable software systems.