History of computers, Boolean logic and number systems, Assembly language programming, ARM assembly language, Computer arithmetic, Design of a basic processor, Microprogramming, Pipelining, Memory system, Virtual memory, I/O protocols and devices, Multiprocessors.
The laboratory assignments are a key component of this course and requires students to design and implement circuits and sub-systems on FPGA kits covering almost all the topics covered in the lectures.
#Data structures in compiler design software
Course ends with introducing the challenges of embedded design where software is becoming integral to all devices. The second part is focused on ASIC style system design and introduces VHDL, FPGA as implementation technology, synthesis steps as well as testing techniques.
First part deals with the basics of circuit design and includes topics like circuit minimization, sequential circuit design and design of and using RTL building blocks. The course contents can be broadly divided into two parts. Propositional logic, Predicate Calculus and Quantifiers Proof Methods Sets, functions, relations, Cardinality, Infinity and Diagonalization Induction and Recursion Modular Arithmetic, Euclid’s Algorithm, primes, Public Key Cryptography Polynomials, finite fields and Secret Sharing Coding Theory: Error correcting codes, Hamming codes, Hamming bound Basic Counting - Pigeon hole principle Advanced Counting - recurrence relations, generating functions, inclusion-exclusion basic information theory, entropy, Kraft’s inequality, mutual information, lower bounds Probability - sample space, conditional probability, expectation, linearity of expectation, variance, Markov, Chebychev, probabilistic methods Graph Theory - Eulerian, Hamiltonian & planar graphs, edge and vertex coloring. Dijkstra’s algorithm, directed acyclic graphs and topological sort. Depth first search in directed and undirected graphs. Sorting: merge, quick, radix, selection and heap sort, Graphs: Breadth first search and connected components. Balanced BST: AVL Trees, 2-4 trees, red-balck trees, B-trees. Trees, traversals, binary search trees, optimal and average BSTs. Dictionaries skip-lists, hashing, analysis of collision resolution techniques. Introduction to object-oriented programming through stacks queues and linked lists. At least one example of large program development. Structured style of imperative programming. Identifying and exploiting inherent concurrency. Encapsulation, abstractions, interaction and modularity. Problem solving using a functional style Correctness issues in programming Efficiency issues in programming Time and space measures. Algorithms to programs: specification, top-down development and stepwise refinement. Concept of an algorithm termination and correctness. Courses - Department of Computer Science IIT Delhi Courses - Department of Computer Science and Engineering IIT Delhi