Undergraduate Handbook - School of Computing and Informatics ...
Undergraduate Handbook - School of Computing and Informatics ...
Undergraduate Handbook - School of Computing and Informatics ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
pr<strong>of</strong>essional programmer. Therefore, after this course, the student should be able to implement non functional but<br />
critical aspects <strong>of</strong> programming like robustness <strong>and</strong> security, develop well documented <strong>and</strong> well structured s<strong>of</strong>tware<br />
that can easily be maintained, be knowledgeable in other programming practices like mobile programming, be aware<br />
<strong>of</strong> newer programming paradigms like service oriented <strong>and</strong> cloud computing.<br />
Indicative Content: Programming for Security: Programming for Robustness; Programming for Maintainability;<br />
Trends in Programming Paradigms<br />
Reference Books:<br />
i. W. R. Stevens <strong>and</strong> S. A. Rago, Advanced Programming in the UNIX Environment, Addison Wesley 1992.<br />
CSC 3205 Compiler Design (3 CU)<br />
Course Description: In this course unit, students shall underst<strong>and</strong> the complete process <strong>of</strong> translating a Programme<br />
in a high-level language to machine language. The course gives an introduction to the design <strong>and</strong> implementation <strong>of</strong><br />
a compiler with emphasis on principles <strong>and</strong> techniques for Programme analysis <strong>and</strong> translation. It also gives an<br />
overview <strong>of</strong> the tools for compiler construction, Lexical analysis, token selection, transition diagrams, <strong>and</strong> finite<br />
automata. The use <strong>of</strong> context-free grammars to describe syntax, derivations <strong>of</strong> parse trees, <strong>and</strong> construction <strong>of</strong><br />
parsers, Syntax directed translation schemes; Intermediate code; Symbol table; Code generation; Detection,<br />
reporting, recovery <strong>and</strong> correction <strong>of</strong> errors.<br />
Indicative Content: Language translators: Introduction to compilers <strong>and</strong> interpreters; The structure <strong>of</strong> a compiler:<br />
lexical analysis, parsing, semantic analysis; Intermediate code generation, register allocation, global optimization;<br />
Lexical scanning; Parsing; Automatic parser construction; FIRST <strong>and</strong> FOLLOW functions; LL (1) parsers; LR<br />
parsers. Conflicts in LR grammars <strong>and</strong> how to resolve them; Semantic analysis: Attributes <strong>and</strong> their computation,<br />
tree-traversals, visibility <strong>and</strong> name resolution; inherited attributes <strong>and</strong> symbol tables. Name resolution in blockstructured<br />
languages; Type checking: Type systems, varieties <strong>of</strong> strong typing, overload resolution, polymorphism<br />
<strong>and</strong> dynamic dispatching. Type checking <strong>and</strong> type inference, unification; Run-time or Run-time organization:<br />
storage allocation, non-local references, parameter passing, dynamic storage allocation. Exception h<strong>and</strong>ling,<br />
debugging information; Intermediate code generation: control structures, expressions, simple register allocation.<br />
Aggregates <strong>and</strong> other high-level constructs; Global optimization<br />
Reference Book:<br />
i. W. M. Waite <strong>and</strong> G. Goos, Compiler construction, Springer Verlag 1994.<br />
CSC 3206 Group Project (5 CU)<br />
Course Content: The course is to allow students, in groups, to integrate the knowledge acquired over the previous<br />
five semesters into solving a non trivial problem through a computer application. Emphasis will be put on the<br />
systematic development methodology, the documentation <strong>of</strong> the development process, <strong>and</strong> how well the developed<br />
system addresses the problem to be solved. Non functional attributes like robustness, usability, security <strong>and</strong><br />
reliability will also be tested. The course will give students experience in Group <strong>and</strong> collaborative work, Proper<br />
procedures in development <strong>of</strong> computer systems, Proper documentation <strong>of</strong> the s<strong>of</strong>tware development process,<br />
Development <strong>of</strong> big not trivial computer projects. The content is to be determined by the students under the<br />
guidance <strong>of</strong> the supervisor.<br />
CSC 3207 Computer Security (3 CU)<br />
Course Description: Computer security is a branch <strong>of</strong> technology concerned with digital security or information<br />
security applied to computers. Since the largest part <strong>of</strong> the computer that users interact with is s<strong>of</strong>tware, computer<br />
security pays big attention to development <strong>of</strong> secure s<strong>of</strong>tware. Students will be conversant with threats faced by<br />
computers in the connected digital world, techniques that are used to protect computers against various threats.<br />
Indicative Content: Digital security principles, Hardware based security mechanisms, Secure operating systems,<br />
Security architecture, Security by design, Secure coding (S<strong>of</strong>tware Security), Access Control Lists <strong>and</strong> Security<br />
Applications.<br />
51