|
History of computers; functional components of a computer; characteristics of a computer system. Broad introduction to programming methodology. Emphasis is on problem solving strategies and techniques for developing/ documenting applications, including principles
of structured programming, problem decomposition, program organisation, the use of procedural abstraction and basic debugging skills. Visual BASIC programming language serves as the vehicle to illustrate the many concepts.
Introduction to concepts of programming logic, principles and techniques. Study and use of the Microsoft office productivity suite with an emphasis on database design and development. Introduction to VBA programming languages and development of customised solutions
for business and personal needs. Introduction to Windows operating system and VB .NET
An introduction to computer programming with emphasis on mathematical problems using FORTRAN programming language. Introduce students to computers, compilers and editors, and they are expected to write medium-sized programs.
Current issues in programming languages and environments. Language topics include imperative, functional, logic and object-oriented programming, and other programmable applications such as symbolicmanipulations and simulation. Environment topics include computer aided software engineering tools, user interface tools and standards and program development tools. Implementation of concepts such as binding, scope, looping, branching, subprograms and parameter parsing, tasks and concurrency, heap management, exception handling, templates, inheritance and overloading.
Introduction to number systems and codes, computer arithmetic, Boolean algebra, combinational and sequential circuits. Circuit minimisation techniques. Principles of digital computing.
General machine structure, program counters and instruction register. Introduction to data representation and numbers, instruction sets, addressing modes and assembly language programming. Interfacing assemblylanguage programs to high-level language programs.
Introduction to technology underlying the internet, core network protocols; introduction to web programming mincluding apache web server, HTML, JavaScript, PHP scripting language and MySQL relational database; image and graphics creation and manipulation; introduction
to audio and video; multimedia authoring and production.
Review of mathematical preliminaries: order notation, summations, recurrences; graph exploration: connected components, bi-connected components, topological sorting,
strongly-connected components; greedy algo-rithms: minimal spanning trees, shortest paths, scheduling; divide-and-conquer: merge sort, quick sort, median and selection sorts; lower bound for finding minimum and sorting.
04
Overview of computer organisation, register transfer sequences; micro-operations, instruction codes, control units and timing; microprogramming; bus organisation and memory organisation.
Introduction to C++ programming language, pointers and arrays, classes, recursion, stacks, queues, lists, tables, trees, binary trees, search trees, heaps and priority queues. Sorting, hashing, garbage collection, storage mmanagement and rudiments of the analysis of algorithms.
Human factors of interactive software; theories; principles and guidelines of human computer interaction design including command line interface, graphical user interface and application programmatic interface; eventdriven application design and development; direct manipulation;
interaction devices; system and feedback messages, gesture recognition system, computer supported cooperative work, virtual relative, augmented relative, multimedia system, robotic etc.
History of operating systems, operating system concepts and structure. Processes (communication and scheduling), memory management, input/output and file systems. Protection and security. Case studies of some operating systems such as Windows and Unix operating systems.
Extensive treatment of the C programming language and major software development tool in the Unix environment. Application of systems programming including interaction with operating system functions and networkn programming.
Software development life cycle; structured top-down and bottom-up design, dataflow diagramming, entity relationship modelling; study of computer aided software engineering, I/O design and validation, file and database design; design of user interfaces; comparisoncomparison of structured and object-oriented design.
Sets, relations, functions, recurrence relations, prepositional calculus, Boolean algebra, graph and group theories, introduction to monoids and formal language theory.
Introduction to OO and Java, why OO is fundamentally different from imperative programming, nuts and bolts (scalars, strings, and expressions, similarities and differences to C); classes (their interfaces and implementation); control structures and arrays; inheritance (extending
classes, abstract classes, overriding, polymorphism and dynamic binding); exception handling; interfaces; graphical I/O; stream I/O and object serialisation.
Topics in formal languages; their relation to automata theory and their computational complexity. Areas covered are regular expressions, finite automata, pushdown and linear bounded automata; formal grammars and their corresponding classes of languages, Turing machines, undecidability, recursive functions and program schemas.
Introduction to computer system; computer system parts; maintenance techniques, approaches and tools; diagnostics techniques; system assembly and installation; troubleshooting and repair of computer systems and accessories; portables, etc.
Introduction; brief review of analogue and digital signal processing systems; discrete time linear time-invariant signal processing systems; design of finite impulse response digital filters; introduction to z-transforms and infinite impulse response type discrete time filters; design of infinite impulse response type digital filters using analogue filter approximations; digital processing of analogue signals and other data; introduction to the discrete Fourier transform.
Survey of basic file organisations, introduction to OO Cobol, searching techniques including binary search, hashing, and tree directories, sorting algorithms and report generation.
Introduction to digital and analogue representations and channels; bandwidth and noise; channel capacity; Nyquist, Shannon; telecommunication history; circuit switching and packet switching; multiplexing; FDM, TDM, statistical multiplexing; virtual circuits and datagrams; Aloha, CSMA, CSMA-CD, token passing, CDMA, wireless LANs and simple performance analysis;
errors, coding and redundancy; hamming theory and codes; CRCs, selective retransmission and flow control.
Anatomy of a compiler; lexical analysis (scanning); syntax analysis (parsing); syntax-directed translation; semantic analysis, intermediate code generation; code generation and optimisation.
Introduction to computer networks; the OSI and TCP/ IP models; transmission media; network services and protocols; routing protocols and algorithms; network layers and topologies; applications and security; internetworking and the internet; problems: congestion and intrusion, bandwidth allocation; construction and installation of networks.
The concepts and tools of electronic commerce; technology of the internet, core network protocols, agents, commerce client technology; survey of technologies used to support all aspects of electronic commerce; structural design of electronic commerce systems; client-server architecture, Java Beans, Enterprise Java Beans, Java Server Pages; characteristics, properties and processing of electronic payment; security; design and implementation issues related to web application for electronic commerce.
Database concepts: file systems and databases, relational database model; design concepts and implementation: entity relationship modelling; normalisation of database tables, structured query language; database design and implementation; introduction to transaction
management and concurrency control, distributed database management systems; database privacy, security, failure and recovery.
Introduction to the techniques and methodologies of software engineering; specification modelling; requirements requirements analysis and definition; specification; softwaren design; quality assurance; testing; reuse; development tools and environments.
Overview of input/output hardware, elements of graphics software; fundamental algorithms; two-dimensional viewing and transformation; design for interaction, and introduction to three-dimensional concepts; digital photography; video editing; survey of applications.
History; design principles; kernel modules; installation and maintenance of Unix operating systems such as Linux; survey of the operating system facilities and commands. Process management, scheduling, memory management, file system, input/output, network structure
and security. Effective use of the operating system tools for writing shell scripts and batch files, pattern matching, editing, macro processing, data analysis and text processing.
Object-oriented databases; client/server systems; data warehouse; databases in electronic commerce; web database development and database administration.
Basic concepts of the construction of expert systems and related architectures; tools and languages for knowledge engineering analysis and design, case studies of expert systems.
Introduction and overview; properties of wireless PANs, LANs and WANs: Ad-hoc and infrastructure networks; physical constraints and limitations (transmission and reception), network structures and architectures, including hand-off and mobility support at the physical/
link level; example technologies at the physical/linklayers: PANS – bluetooth, LANs – IEEE802.11, HiperLAN, basic GSM and GPRS network structures and protocol architectures, next generation wireless overview including UMTS, IMT-2000 and W-CDMA; mobile IP: mobile IPv4 and mobile IPv6, problems with routing, quality of service and security; overview of use of intelligence in mobile systems and power management issues; file systems; mobile infrastructurem support.
Computer architecture and design principles; computer structures, arithmetic logic units, input/output organisation, partitioning, parallel processing, multiprocessor and thread-level parallelism; interconnection networks and clusters, vector processing, multiprocessing.
Introduction and overview of fault tolerant schemes; fault and error modelling; test generation and fault simulation; concepts in fault-tolerance; reliability/availability modelling; system level diagnosis; low level faulttolerance: error correcting coding, byte-error detecting; high-level fault tolerant techniques in systems: rollback, checkpointing, reconfiguration; software fault-tolerance; fault tolerant routing; integrated hardware/software fault-tolerance.
Introduction to technological systems and organisations; characteristics of systems and organisations; professional issues; legal issues; ethical issues; risk; risk assessment and management; project management; skills of a project manager and resource planning.
Garbage collection; dynamic data structures, pointer analysis, aliasing; code scheduling, pipelining; dependence testing; loop level optimisation; superscalar optimisation; profile-driven optimisation; debugging support; incremental parsing; type inference; parsing algorithms; practical attribute evaluation; function inlining and partial evaluation.
Introduction and overview: discrete cosine transform, coefficient coding; audio coding: analogue and digital form, compression techniques; video: TV standards, video digitisation, raw image representation, image and video compression, video compression schemes, video
adaptation; system streams; signalling; operating system issues; describing network traffic; congestion controlm and resource management; enhanced quality of service; IP multicast and digital rights management.
Techniques and principles of artificial intelligence and implementation of some of these techniques; various formalisms for representing knowledge and relationships relationships
of this to such tasks as inference, game playing and planning; overview of machine learning and pattern recognition; nature and goals of soft computing such as neural networks, fuzzy logic and genetic algorithms to artificial intelligence.
Introduction; generic architecture of a cluster computer; system architecture: SMP, network interface and topology, network communication protocols including TCP/IP programming and low-latency protocols such as VIA; cluster runtime support; parallel programming: shared memory programming, distributed memory programming
using MPI and sockets, middleware programming such as CORBA, RPC; and parallel programming and applications.
Process and thread management: basic process model, scheduling, critical sections and synchronisation; mutual exclusion; concurrency: modelling concurrent activity starting with Java threads; forms of communications, architectures, means of communications – shared memory, direct communication between process, case study – Unix (fork processes, communication using signals, pipes, sockets, shared memory; distributed systems: client-server model, naming and binding, remote procedure call general principles, protection and security; Java RMI.
Performance evaluation methodologies; methods for evaluating computer/communications systems; analytical modelling using queuing theoretical approaches;simulation for performance evaluation; applying theoretical methods by modelling computer system components. Case studies using analytic and simulation techniques for evaluating systems performance.
Introduction to quantum mechanics, quantum bits and complex vector spaces; quantum evolution, gates, registers; universal gates, no-cloning theorem; quantum entanglement and teleportation; quantum algorithms, quantum search; quantum Fourier transform, phase estimation, quantum counting, order finding for periodic functions, quantum factoring of integers, physical realisation of quantum gates and quantum error correction.
See CSC592 for details.
An independent or group investigation of an appropriate software, hardware, communication and networks more IT related problems in computer science carried out under the supervision of a lecturer. Before registering, the student must submit a written proposal to the supervisor to review. The proposal should give a brief outline of the project, estimated schedule of completion, and computer resources needed. A formal written report is essential and an oral presentation may also be required.
|
|