06.07.2013 Views

Undergraduate Handbook - School of Computing and Informatics ...

Undergraduate Handbook - School of Computing and Informatics ...

Undergraduate Handbook - School of Computing and Informatics ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!