Discrete mathematics is the specialty basic course of computer science and technology. The objective of study of discrete mathematics (A) I is to master system knowledge of mathematical logic, set theory, counting and relations closely related to the computer specialty. Through learning this course, create conditions for learning the subsequent courses, including discrete mathematics (A) II, data structure, algorithm analysis and design, compiling principle, computer network, database system, artificial intelligence, moreover, improve the abstract thinking and rigorous logical reasoning ability, and then lay a solid foundation to participate in the innovative research and development for the future work.
The main content includes the mathematical logic, set theory, counting and relation. Mathematical logic consists of proposition logic and predicate logic. Set theory contains the concept, operation, as well as the definition, denotation, operation of function and so on. Counting contains the concept, pigeonhole principle, permutations and combinations and so on. Relation contains the concept, denotation, operation of relation, equivalence relation, partial order and Hasse diagram, etc..
Fundamentals of Computer Science
The contents of this course include following aspects:
(1) Discrete Maths cover: Sets, Relations, Functions, Recursions, Propositional Logic,Predicate Logic,Logicin Action.
(2) Data structures cover: Simple variables, Linear and multi-dimensional arrays, Strings, Records and Objects, Linked List (Chain), Pointers, Regions of memory in computing systems.
(3) Introduction to Algorithms cover: Operations counting, Worst, Average, Best cases, Insertion sort, Introduction to Big O function, Sentinel Search and Efficiencies, Searching Sorted Arrays.
(4) Abstract Data Types cover: ADTs and Set ADT, Stack, Queue, Graphs, Trees.
(5) Hard Problems and NP-Completeness cover: Hard Problems in Computing, ProblemsTypes, Reductions, Problems Classes.
(6) Searching and Sorting cover: Linear and Binary Searching Single File, Indexed Retrievaland Hashing Single File, Sorting Techniques, Treebased Sorting.
This module introduces students to the theory and practical application of operating system concepts, and to concurrent systems in general. The course includes the following topics:
Internal OS structure;
File and I/O management; interrupt handling and device drivers;
Memory management structures and techniques;
Process management: scheduling and threads; support for multiprocessors.
Security and protection issues including access control
OS development: cross compilation; run-time support; and APIs
This course aims to teach basic concepts and knowledge about information systems, and develop basic competence in fundamental information handling framework of technologies, together with their applications in social and business contexts. It further aims to develop awareness of social aspects of computing, human centred system design and system scale problem solving.
At the end of the course, the students should be able to: understand the general concepts and frameworks of information systems, construct simple databases and build query for the the databases in correct SQL, validate the data, describe the functions and architecture of basic information management systems, comprehend social issues associated with digital technology and information systems, demonstrate awareness of legal and professional issues affecting software development, recognise social and ethical constraints and make effective use of basic data handling technologies.
This module demonstrates the fundamental building blocks, mechanisms and concepts found in all digital systems. Students will learn about the workings of a processor; how memory works; and the architectures of classical and contemporary computers. It also shows students how programming languages are turned into something a computer can understand. In providing a strong insight into these fundamental operations, students are encouraged to develop new ways of thinking and to develop abstract thought.
Students will gain an understanding of the key features and components of digital systems, including low level components such as registers and adders, and how these can be controlled through the use of programming techniques. They will develop the skills to work with different logic constructs and number systems, in particular, binary logic. The relationship between applications software, systems software and hardware will be considered and students will also develop an applied understanding of the c programming language.
Programming in ASNI C
ANSI C is known as the standard C language. This course is designed to teach students statements, grammar and programming skills in ANSI C. It is a course that combines lecturing and computer practices.
This course is organized into five parts - the expressions for arithmetic and logical operation, flow control, user-defined functions, data types of array, structure and pointer and file operation.
Students successfully completing this course will be able to understand the concept of C languages, programming style, and write their own applications by using ANSI C.
Object-oriented programming method is developed to maintain software quality and in part to address common problems by strongly emphasizing discrete, reusable units of programming logic. As a superset of C, C++ language provides object-oriented programming mechanisms together with functional module mechanismsthatareinClanguage. The course introduces fundamental conceptions about object-oriented programming methods together with their implementation parts inside C++ and applications. Students successfully completing this course will be able to design and developobject-orientedC++applicationprograms. The contents of this course includes: classes and objects, special members and typical application of objects, friends, overload and type cast, inheritance and derived classes, polymorphism and virtual functions, templates and instantiation mechanisms, basics about developing libraries and modules, generic algorithms and standard containers, fundamentals about Windows programming, introduction to programming withgraphicaluserinterfacebyVC++.
The group projects is to give students the experience to execute a project through all stages from initial design to implementation to the presentation of the results; to work in groups to the demands of a client (or group supervisor) and to apply knowledge being gained in other courses within a project context.
This course is organized into four parts – project design, implementation, demonstration, presentation and final reflective report.
At the end, the students will have experience with a concrete, group development project covering all aspects and being executed in a real-world environment. In particular, the student will learn and apply their knowledge about prototyping, project planning, management and execution, game design, systems design, and/or testing strategies.
This module aims to instill the knowledge, understanding and skills expected of a principled computer programmer. More specifically:
To develop specific skills in writing, analyzing, debugging, testing and documenting computer programs.
To instill best practice of the day to day techniques associated with principled software development.
To develop a practical understanding of the software development cycle and an awareness of the challenges faced by software developers in addressing scalability and complexity in computer software.
To develop specific working knowledge of the Scratch, C and Java programming languages.
On successful completion of this module students should be able to demonstrate subject specific knowledge, understanding and skills and have the ability to:
Work independently to develop moderately complex, robust computer programs in the Scratch, C and Java programming languages.
Apply a principled approach to the development of a software program.
Perform effective testing of computer programs.
Undertake reasoned analysis of alternative designs for moderately complex computer programs.
Analyse and debug computer programs.
Understand the need for a structured approach to the software development process
This module introduces the fundamentals of software design, and its role for developing software systems. The first part of the module will explain that software design is the description of1)the structure of a software system to be implemented,2) the data which is part of the system, 3) the interfaces between system components, and 4) sometimes the algorithms to be used. Also the topics of software lifecycle will be covered, including lifecycle model selections, requirements, high-level design, detailed design, implementation(coding),and the importance of aligning them. The second part of the module will introduce various software design methods. It provides some ad-hoc ways of software design (e.g., starting from requirements (often natural language), preparing an informal design, coding commences and the design is modified as the system is implemented, etc) and their consequences. Then it explains systematic approaches to developing a software design using a set of graphical models (e.g., object model, sequence model, state transition model, structural model, data-flow model, etc.). Also, the design process involved in developing several models of the system at different levels of abstraction is explained. The third part of the module will introduce object-oriented design with UML. The four aims of modeling (visualization of the expected system, specification of the system’s structure and/or behavior, provision of a template for constructing the system, documentation of the decisions that have been made) are explained and design principles (e.g., information hiding) are explored. Finally, UML models along with object oriented design process are provided.
Database Systems Development
This course builds upon the basic concepts and techniques from the first DBMS course and introduces students to real world Oracle database development environment and hands-on experiences. Students completing the course should be able to directly involve in actual database application system development projects. A required course project will give students the opportunity to develop a live Oracle application system.
After completing the course, you should be able to:
Explain how the Client/Server system is used in regards to relational database systems
Explain the specifications of various Client/Server database systems and be able to evaluate them in relation to a buying decision
Develop a live database application system using Oracle Application Express development platform
Design a web based client side user interface that connect to and interact with database servers
Use a structured program such as Oracle PL/SQL to develop an enhanced user interface
Demonstrate sound relational database design techniques through development of course project
Computer Network and Applications
"Computer network and application" is a professional backbone course for the undergraduate students majoring in information management and information system.The objective of this course is to grasp computer network principles and methodologies. Students should collect information related to computer network applications and fulfill case analysis. They are also required to make network application scenario accordingly.
This course systematically explains the basic function of computer network system and its system structure,network communication technique,composition of computer network,internet and application ,wireless and mobile computing.
Students are offered an understanding of the fundamental principles underpinning modern distributed systems and practical implementation using Java. They explore remote invocation, indirect communication, group communication and non-functional aspects in distributed systems such as scalability, fault-tolerance and dependability. Various architectures and techniques widely used in Distributed systems, including DDBMS (Distributed Database Management System), SOAP (Simple Object Access Protocol) and REST (REpresentational State Transfer), are investigated in the module and students will benefit from gaining practical experiences of developing some distributed systems applications in Lab. Through this, the module examines distributed systems design, security and deployment. Over the course of the module, students will improve their problem solving and programming skills, and gain insight into and familiarise themselves with the framework and architecture of distributed systems.
Professional Issues and Research Methods
Computing graduates need to understand social, legal, ethical, professional issues inherent in the discipline of computing. The subject-specific aims are to develop an understanding of the commercial and economic context of the discipline, and the relevant laws and professional codes governing computing-related industry, stimulate thinking about social and ethical implications of the use of widespread and sustainable use of computing-based systems and technologies, and develop an awareness of risks in computing projects and of social and professional responsibility.
By the end of the course students will be able to: recognise social, legal, ethical and professional issues in the discipline; understand the requirement for engineering activities to identify and manage cost drivers; identify laws and and professional codes, and relate them to examples of computing in practice; use analytical tools to make decisions on ethical issues that may arise related to computer systems that they develop and implement in the future; understand the requirement for engineering activities to promote sustainable development; ask serious questions and evaluate proposed answers on important issues in their field; describe desirable attributes and employability skills of graduates in computing, and identify areas for their personal and and professional development; write and maintain an effective CV, compose covering letters and prepare for interviews; develop, present and critique arguments.
Languages and Compilation
Providing an introduction to formal languages, grammar, automata and how these concepts relate to programming in terms of compilers and the compilation process, students will learn about syntax and semantics, phrase structure such as derivation and parsing.
By the end of this module, students will understand the relation of programming languages and the theory of formal languages. They will possess an essential understanding of the compilation process for a high-level programming language. Students are encouraged to engage with theoretical aspects of computer science to compliment practical skills in other parts of their degree.
This module aims to give students a broad grounding in artificial intelligence including knowledge and understanding of reasoning, decision making, fuzzy logic, neural networks, and genetic algorithms and the skills to implement artificial intelligent systems. The understanding gained through the module should give the students an appreciation of the challenges in this area. Furthermore, the module will prepare students to understand and critically analyse artificial intelligence techniques used in modern computers and mobile devices.
This fundamental computer science module aims more generally to be aware of the requirements of artificial intelligence systems in general and place these in the context of computing and communications systems. The broad grounding in knowledge based, probabilistic and logical systems through machine learning techniques should encourage the students to be more aware of competing approaches more widely in other aspects of their studies.