Bachelor of Computer Science

Recommended Study Sequence
Click unit name to reveal description:
Accreditation
The B Computer Science currently is accredited with the Australian Computer Society at Professional Level. It is due for reaccreditation, and this is due to occur early this year.
Admission
HSC Mathematics (2 unit) and any two units of HSC English
Potential students normally apply for admission to the course through the Universities Admission Centre (UAC). Other admission schemes of the University of Western Sydney are available. International applicants should contact UWS International for details of admission. Contact information for the International Office is available via the UWS website.
Qualification for this award requires the successful completion of 240 credit points which include the units listed in the recommended sequence below.
Recommended Sequence
Full-time
Year 1
Autumn session
This Level 1 unit introduces the basic concepts and techniques of statistics that are particularly relevant to problem solving in science and technology. It also provides a sound base for more advanced study in statistics in subsequent sessions. Topics include: presentation of data; descriptive statistics; the role of uncertainty in decision making; hypothesis testing; and simple linear regression.
As a first unit in computer programming, Programming Fundamentals covers basic computer architecture, basic data and file structures, concept of algorithms, programming constructs, programming language features and functions, program design, test design, basic documentation. A high level programming language is employed to solve problems in a structured manner.
Principles of Professional Communication 1
This unit provide students with an introductory understanding of a range of communication theories and practices necessary for academic work and professional success.
This Level 1 unit introduces set theory, symbolic logic, graph theory and some counting problems. It serves as a grounding for further study in mathematics or computing.
Spring session
This unit is designed for computer science students, particularly those interested in systems programming and hardware development. The students will learn about the interface between the hardware and software of a computer system. This will involve study of some aspects of computer architecture and low level interfacing to gain an insight into CPU organisation at the assembly language level. After completing this unit students will be able to write procedures in an assembly language, and use their understanding of the relationship between the instruction set architecture and the implementation of high level languages to write efficient programs.
Data Structures and Algorithms
This unit introduces students to fundamental data structures and algorithms used in computing. The material covered forms the basis for further studies in programming and software engineering in later units. The unit focuses on the ideas of data abstraction, object-oriented programming, and software reuse. Issues relating to computational complexity of algorithms are addressed throughout the session. Topics covered include: the fundamental abstract data types (lists, stacks, queues, trees, hash tables, graphs); recursion; complexity of algorithms; internal and external sorting and searching algorithms; file structures; and B trees.
Database Design and Development
The main purpose of this unit is to provide students with an opportunity to gain a basic knowledge of database design and development including data modeling methods and techniques and database implementation using a database management system
This introductory unit in computer systems networking covers basic networking topologies, Ethernet fundamentals, ISO OSI layers, routing, switching and sub-nets, the Internet architecture, networking protocols including TCP/IP, important networking devices such as repeaters, hubs, bridges, routers and gateways, basic management and security issues. This unit is also the first of three units which will prepare students for industry based networking certification.
Year 2
Autumn session
This unit provides an introduction to the knowledge and skills required for the design, writing and support of technical software and other such functions normally falling within the role of the systems programmer. It provides for detailed study of a systems programming environment and its application to systems programming tasks.
This unit builds on the programming foundations laid in Programming Fundamentals. Utilising an object-oriented language it continues the development of programming skills and methodologies required for professional programming and for further study in later computing units. Topics covered include object-oriented programming techniques of encapsulation, inheritance and polymorphism, programming concepts including pointers, references, multi-dimensional arrays, strings, files, sorting and searching, and the fundamental abstract data types linked list, stack and queue.
Three abstract models of computation are studied in this unit. The first is the finite automaton, together with regular languages and regular expressions. The second is the pushdown automaton, together with the associated languages and grammars. The third is the Turing machine. This allows study of the power of computers in general and their limitations, in particular situations: it is shown that there are problems for which there is no algorithmic solution. This unit explores the application of formal languages in the design of compilers and text processors.
And one elective
Spring session
This unit is concerned with the design, development and post-delivery maintenance of software systems. The unit pays special attention to requirements engineering, formal specification techniques and design methodologies. The B-method is used to produce consistent, re-usable specifications and develop code that is both efficient and correct.
And two Computer Science alternate units
And one elective
Year 3
Autumn session
This is a final year unit that builds on foundation and intermediate computing units by preparing students for professional experience. The unit covers ethics and professional code of practice, legal, social and environmental issues relating to computing, I.T. and communications technology, security, privacy and freedom of information, team dynamics, project scheduling and management, project cost/benefit analysis, and quality assurance for systems and applications. This unit is a pre-requisite to the capstone project, covered in Professional Experience.
And two Computer Science alternate units
And one elective
Spring session
This unit acts as a single capstone unit and through the medium of a specific project, provides opportunities for students to experience the range of issues in requirements definition, analysis, design and implementation, relating to the development of a software product.
And two Computer Science alternate units
And one elective
Computer Science Alternate Units
The discovery and practical application of compiler theory has been one of the major achievements of computer science since the mid 1950s. This unit provides computing or computer science majors with an introduction to one of the cornerstones of their discipline. The unit provides: an accurate conceptual model of what occurs when source code is being compiled; an appreciation of the limitations of compilers and translators in general; the knowledge and practical skills necessary to design and implement interfaces of greater syntactic complexity than menus; sufficient general technical knowledge to provide an adequate basis for acquiring product-specific technical knowledge, and then to provide applications development support in any programming language environment.
This unit is designed for computer science students, particularly those interested in systems programming, hardware/software interfaces, and computer system performance evaluation. The topics cover memory system organisation and architecture, CPU functional organisation, pipelined and superscalar microarchitectures, multiprocessor systems, and I/O systems. After completing this unit students will understand the major issues in the state-of-the-art computer architecture, especially modern microprocessors, and will be able to use this knowledge as a basis for product choice and systems configuration.
Computer graphics is a fascinating area of computer science. It is widely used as a tool for visualising information in a broad variety of fields, including science and engineering, medicine, architecture, and entertainment. This unit teaches the concepts and techniques of computer graphics. It is designed as an introduction to the study of visual presentation techniques. Topics covered are intended to provide students with an understanding of the basic principles for design, use and understanding of graphics systems. The unit covers the basic concepts in computer graphics using VOGLE library on UNIX. Techniques and algorithms will be emphasized and programming in C or C++ under UNIX will be required.
Computer Networks and Internets
This unit provides students with an in-depth understanding of the applications of computer networks and the concept of internetworking through the TCP/IP suite of protocols. Some of the network security threats along with their appropriate counter measures are also discussed. The main focus of the unit is on communication and network devices.
Distributed Systems and Programming
This unit covers concepts and design of, and programming for distributed systems. It builds on basic network communication protocols (specifically IP) to cover client-server programming using both the system level socket interface and remote procedure calls. It also examines large-scale distributed system architectures, particularly those based on distributed objects, and considers the complexities inherent in distributed transactions. Key concepts covered include data and algorithmic distribution, idempotent protocols, stateless and stateful servers, and distributed system transparency. Illustrative case studies are included.
This unit is concerned with the protection and privacy of information in computer systems. The focus of the course is primarily on introducing basic concepts in computer and information security and then using this knowledge as the vehicle to study the design and implementation of secure computer and network systems. This unit also provides students with practical experience with security programming. In more specific terms, the unit is intended to provide the following: basic concepts of conventional and public key encryption; number theory and its application in public key encryption and signatures; protocols used in secure computer systems.
This unit offers students basic concepts and latest technologies of internet programming and web-based application development. Utilising one of the popular internet programming languages, such as Java, it aims to develop the programming skills and methodologies required for both client-side and server-side programming as well as general purpose programming. The range of topics covered by the unit includes HTML, XML, Java applets, desktop application in Java, servlets, JavaServer Pages and JDBC.
This unit is concerned with the protection of information transferred over computer networks. It includes discussion of techniques for securing data transported over local and wide area networks. At the conclusion of the unit students will have a good understanding of the practical aspects of securing a computer network against internal and external attacks.
This unit provides an introduction to the theory and practice of the internal structure, implementation and functionality of operating systems. The unit is relevant not only for systems programmers, but also for applications developers who need to understand how operating systems control computer hardware, and how they provide convenience, efficiency and security for application development and implementation.
Systems Administration Programming
This unit covers programming techniques and tools used to administer standalone and networked computer systems. The unit focuses on the use of high level interpretive scripting languages to automate everyday administrative tasks, and to monitor and control running systems. Techniques to extend scripting language capabilities by dynamic linking to compiled code are examined, particularly in terms of access to operating system level functions. The unit also examines the use of administrative programs and tools to monitor and adjust system performance and capacity.
Systems and Network Management
The rapid progress in technology, the increasing demand for IT services, and the strong expansion of the Internet have resulted in heterogeneous interconnected networks with many distributed systems that run on them. To ensure access and efficient utilization of network resources, subject to organisational policy restrictions, networked systems must be managed properly. This unit addresses the issues relevant to such management. It covers the principles and current practices pertinent to integrated management of networks, systems, services, and applications. The unit helps the student to understand management functions and architectures as well as current standards and relevant protocols.
This unit complements and extends the work already done in Systems Programming 1. It covers advanced topics in programming that are directly relevant to systems level application design and implementation. As such it addresses the main concepts, principles, and techniques for system level programs that utilise virtual memory, dynamic link libraries, asynchronous I/O, and multi-threading that can support high levels of concurrency. The unit also emphasises and builds a sound understanding of kernel level objects, as well as error and exception handling techniques, and focuses primarily on using the low-level functionality exposed by the operating system's C/C++ language API.
This unit provides a broad and comprehensive study on the concepts, history and development of artificial intelligence and intelligent systems; concepts of problem-solving, search techniques and game playing, logics, knowledge representation and reasoning; intelligent planning and learning systems; applications and implementations of intelligent systems and intelligent agents.
This unit is composed of a series of investigative workshops that put into practice, in a Computer Forensics context, many of the technical skills developed in earlier pre-requisite units. The unit is intended to not only further develop these skills but to instil best technical practice, sound understanding of technical investigative techniques and documentation of the results of investigation. Workshop topic areas include: clean media copying techniques, search and identification of hidden data, building profiles of computer activities through probing and analysis of log files and how to prepare a system and network to best support subsequent intrusion and activity detection.
This unit is the culmination and application of knowledge a student will have gained as part of their studies to date. The projects are undertaken within a team environment and are to provide solutions for real computing problems sourced from main ICT vendors, governmental departments and other relevant businesses. The problems will apply to a wide range of fields including but not limited to: computer science, computer forensics, e-Business, information systems, games and editors, e-Health, e-Government and e-Voting, biomedical applications, e-Learning and PDA, mobile and wireless technologies, latest technologies and service-oriented architectures (SOA). The group will follow established software engineering methodology in all stages of the design and implementation of project, including elements of project management, version control and required documentation. The focus of the unit is the delivery of a software product of a marketable quality, including complete technical documentation and user manuals.
Extended Computing Project 2 builds on the experience gained in Extended Computing Project 1 (ECP1), which is its prerequisite unit. As in ECP1, the projects are undertaken within a team environment. This unit will maintain the range and scope of ECP1, but it will allow the students to further refine the projects undertaken as well as add to them the elements of research and innovation. Note: For those degrees where 300098 Computing Project 2 is a core unit, students will be able to complete the new extended unit as an alternative. Both units will be mutually exclusive, i.e. do not count for credit with one another.
Students successfully completing this unit will gain the necessary design skills and knowledge required to build and configure a complex network. This unit builds on the work of Networking Fundamentals and Computer Networks and Internets. The unit also provides the student with an opportunity to develop problemsolving techniques and decision-making skills to resolve networking issues. Students completing this unit and its prerequisites should now be prepared to attempt world recognized network industry certification.
Majors
The majors listed below were designed specifically for this course and are recommended for Bachelor of Computer Science students. Other majors, from the School of Computing and Mathematics or any other School may also be selected but may require more than the standard six semesters to complete depending on their affinity with this course.
Systems Programming Major
This unit is concerned with the protection and privacy of information in computer systems. The focus of the course is primarily on introducing basic concepts in computer and information security and then using this knowledge as the vehicle to study the design and implementation of secure computer and network systems. This unit also provides students with practical experience with security programming. In more specific terms, the unit is intended to provide the following: basic concepts of conventional and public key encryption; number theory and its application in public key encryption and signatures; protocols used in secure computer systems.
This unit is designed for computer science students, particularly those interested in systems programming, hardware/software interfaces, and computer system performance evaluation. The topics cover memory system organisation and architecture, CPU functional organisation, pipelined and superscalar microarchitectures, multiprocessor systems, and I/O systems. After completing this unit students will understand the major issues in the state-of-the-art computer architecture, especially modern microprocessors, and will be able to use this knowledge as a basis for product choice and systems configuration.
This unit provides an introduction to the theory and practice of the internal structure, implementation and functionality of operating systems. The unit is relevant not only for systems programmers, but also for applications developers who need to understand how operating systems control computer hardware, and how they provide convenience, efficiency and security for application development and implementation.
Distributed Systems and Programming
This unit covers concepts and design of, and programming for distributed systems. It builds on basic network communication protocols (specifically IP) to cover client-server programming using both the system level socket interface and remote procedure calls. It also examines large-scale distributed system architectures, particularly those based on distributed objects, and considers the complexities inherent in distributed transactions. Key concepts covered include data and algorithmic distribution, idempotent protocols, stateless and stateful servers, and distributed system transparency. Illustrative case studies are included.
Systems Administration Programming
This unit covers programming techniques and tools used to administer standalone and networked computer systems. The unit focuses on the use of high level interpretive scripting languages to automate everyday administrative tasks, and to monitor and control running systems. Techniques to extend scripting language capabilities by dynamic linking to compiled code are examined, particularly in terms of access to operating system level functions. The unit also examines the use of administrative programs and tools to monitor and adjust system performance and capacity.
This unit complements and extends the work already done in Systems Programming 1. It covers advanced topics in programming that are directly relevant to systems level application design and implementation. As such it addresses the main concepts, principles, and techniques for system level programs that utilise virtual memory, dynamic link libraries, asynchronous I/O, and multi-threading that can support high levels of concurrency. The unit also emphasises and builds a sound understanding of kernel level objects, as well as error and exception handling techniques, and focuses primarily on using the low-level functionality exposed by the operating system's C/C++ language API.
This unit is concerned with the protection of information transferred over computer networks. It includes discussion of techniques for securing data transported over local and wide area networks. At the conclusion of the unit students will have a good understanding of the practical aspects of securing a computer network against internal and external attacks.
This unit identifies and analyses various principles and technologies related to security and privacy and discusses practical application of those principles and technologies in securing computer systems. It is designed to provide basic computer security skills required by any discipline that uses computer systems and also lays a solid foundation for individuals who are keen to pursue a career in computer security. In particular, but not limited to, this unit aims at the implementation and management of security and privacy policies of organisations within the standards and legal framework that is also applicable to the Australian standards.
Computer Forensics Major
This unit is composed of a series of investigative workshops that put into practice, in a Computer Forensics context, many of the technical skills developed in earlier pre-requisite units. The unit is intended to not only further develop these skills but to instil best technical practice, sound understanding of technical investigative techniques and documentation of the results of investigation. Workshop topic areas include: clean media copying techniques, search and identification of hidden data, building profiles of computer activities through probing and analysis of log files and how to prepare a system and network to best support subsequent intrusion and activity detection.
Information Systems Ethics and Law
To give students an appreciation of the ethical and legal issues surrounding the use of information systems. Including: ethics and society; the role of information in society; privacy; the information needs of business and government; international communication networks and the transfer of information; commonwealth and state laws; electronic records and the rules of evidence; professional responsibilities.
This unit provides an introduction to the theory and practice of the internal structure, implementation and functionality of operating systems. The unit is relevant not only for systems programmers, but also for applications developers who need to understand how operating systems control computer hardware, and how they provide convenience, efficiency and security for application development and implementation.
Systems Administration Programming
This unit covers programming techniques and tools used to administer standalone and networked computer systems. The unit focuses on the use of high level interpretive scripting languages to automate everyday administrative tasks, and to monitor and control running systems. Techniques to extend scripting language capabilities by dynamic linking to compiled code are examined, particularly in terms of access to operating system level functions. The unit also examines the use of administrative programs and tools to monitor and adjust system performance and capacity.
This unit is concerned with the protection and privacy of information in computer systems. The focus of the course is primarily on introducing basic concepts in computer and information security and then using this knowledge as the vehicle to study the design and implementation of secure computer and network systems. This unit also provides students with practical experience with security programming. In more specific terms, the unit is intended to provide the following: basic concepts of conventional and public key encryption; number theory and its application in public key encryption and signatures; protocols used in secure computer systems.
This unit is concerned with the protection of information transferred over computer networks. It includes discussion of techniques for securing data transported over local and wide area networks. At the conclusion of the unit students will have a good understanding of the practical aspects of securing a computer network against internal and external attacks.
Computer Networks and Internets
This unit provides students with an in-depth understanding of the applications of computer networks and the concept of internetworking through the TCP/IP suite of protocols. Some of the network security threats along with their appropriate counter measures are also discussed. The main focus of the unit is on communication and network devices.
This unit identifies and analyses various principles and technologies related to security and privacy and discusses practical application of those principles and technologies in securing computer systems. It is designed to provide basic computer security skills required by any discipline that uses computer systems and also lays a solid foundation for individuals who are keen to pursue a career in computer security. In particular, but not limited to, this unit aims at the implementation and management of security and privacy policies of organisations within the standards and legal framework that is also applicable to the Australian standards.
Networked Systems Major
This unit is concerned with the protection and privacy of information in computer systems. The focus of the course is primarily on introducing basic concepts in computer and information security and then using this knowledge as the vehicle to study the design and implementation of secure computer and network systems. This unit also provides students with practical experience with security programming. In more specific terms, the unit is intended to provide the following: basic concepts of conventional and public key encryption; number theory and its application in public key encryption and signatures; protocols used in secure computer systems.
Computer Networks and Internets
This unit provides students with an in-depth understanding of the applications of computer networks and the concept of internetworking through the TCP/IP suite of protocols. Some of the network security threats along with their appropriate counter measures are also discussed. The main focus of the unit is on communication and network devices.
Systems and Network Management
The rapid progress in technology, the increasing demand for IT services, and the strong expansion of the Internet have resulted in heterogeneous interconnected networks with many distributed systems that run on them. To ensure access and efficient utilization of network resources, subject to organisational policy restrictions, networked systems must be managed properly. This unit addresses the issues relevant to such management. It covers the principles and current practices pertinent to integrated management of networks, systems, services, and applications. The unit helps the student to understand management functions and architectures as well as current standards and relevant protocols.
Students successfully completing this unit will gain the necessary design skills and knowledge required to build and configure a complex network. This unit builds on the work of Networking Fundamentals and Computer Networks and Internets. The unit also provides the student with an opportunity to develop problemsolving techniques and decision-making skills to resolve networking issues. Students completing this unit and its prerequisites should now be prepared to attempt world recognized network industry certification.
This unit is concerned with the protection of information transferred over computer networks. It includes discussion of techniques for securing data transported over local and wide area networks. At the conclusion of the unit students will have a good understanding of the practical aspects of securing a computer network against internal and external attacks.
This unit provides an introduction to the theory and practice of the internal structure, implementation and functionality of operating systems. The unit is relevant not only for systems programmers, but also for applications developers who need to understand how operating systems control computer hardware, and how they provide convenience, efficiency and security for application development and implementation.
Distributed Systems and Programming
This unit covers concepts and design of, and programming for distributed systems. It builds on basic network communication protocols (specifically IP) to cover client-server programming using both the system level socket interface and remote procedure calls. It also examines large-scale distributed system architectures, particularly those based on distributed objects, and considers the complexities inherent in distributed transactions. Key concepts covered include data and algorithmic distribution, idempotent protocols, stateless and stateful servers, and distributed system transparency. Illustrative case studies are included.
This unit covers in depth the basics of networking and provides students with the knowledge and skills necessary to install, test, tune, customise, repair and maintain networking hardware and software necessary to create a Local Area Network (LAN). Students also learn how to administer a LAN by setting up user accounts, access privileges, security procedures, and back-up/recovery procedures.
