Dean: Professor John Baird, BSc ANU, PhD ANU
The Faculty of Engineering and Information Technology was established in 1993 and comprises the Department of Engineering and the Department of Computer Science.
The Faculty represents the commitment of the ANU to developments in engineering and information technology, and recognises the strength of the university's undergraduate and graduate programs in these disciplines. The Australian National University has a world-wide reputation in many fields including computing and engineering. Each of the two departments in the Faculty is a key participant in two Cooperative Research Centres funded jointly by the Australian Government and industry to carry out collaborative research.
Further information is available on the Faculty Web site: http://feit.anu.edu.au
|
Bachelor of Engineering (Manufacturing and Mechanical Systems) |
|
|
Bachelor of Information Technology/Bachelor of |
(a) Advanced Mathematics Extended major/minor and Physics major or
(b) Advanced Mathematics Extended double major and Physics minor
The ANU Bachelor of Engineering degree programs are four-year, IEAust accredited undergraduate programs that integrate selected areas of electrical and mechanical engineering with computer systems and engineering management to produce well-rounded and multi-skilled engineering professionals. The systems engineering approach at ANU is underscored by technological trends which cut across boundaries between traditional disciplines of engineering and computer science.
The aim of the BE degree programs is to prepare students for successful careers as professional engineering managers, designers, analysts, educators and researchers.
Building on a foundation of basic science and engineering fundamentals, the four-year BE degree programs focuses on the following major disciplines:
The program of study is the same for all students in the first year, with specialisation opportunities starting in year 2 through the selection of at least one of the major disciplines listed above, appropriate professional electives and project work.
It is the aim that the BE graduate: has a sound and broad knowledge of basic science and engineering; is able to communicate effectively with engineers and the general public; has the capacity to acquire in-depth discipline knowledge; is able to use common sense, scientific and engineering knowledge to identify, formulate and solve problems; is able to use a systems approach to engineering analysis, design, operation and management; is able to contribute to a multidisciplinary and multicultural team; is conscious of the social, cultural, global, environmental, legal and business aspects of engineering, including a commitment to the principles of sustainable development; has an understanding of the responsibilities of an inclusive and socially aware engineering professional, including a commitment to the IEAust Code of Ethics, life-long learning and continuing professional development.
These attributes are engendered by: formal courses in basic science, engineering fundamentals, engineering management and law; discipline courses that introduce students to the cutting edge of selected areas of engineering; hands-on experience in the analysis, design and development of telecommunications, manufacturing, energy and management systems; final-year project work which is relevant to industry research, development, operations and management; emphasis in all units on the functions, goals and wider context of engineering; teaching and assessment processes which reflect the importance of written and oral communications, project and design work; small-group teaching that encourages collaborative learning and problem solving; group laboratory, analysis and design exercises; and a student seminar program.
Students may specialise through the choice of Engineering majors and electives, other University electives and named degrees
The Institution of Engineers, Australia (IEAust) specifies that students are required to complete at least 60 days of engineering work experience during the course through approved professional employment taken in the vacation periods. For details, see entry for ENGN4005 Practical Experience.
The BE degree program requires the completion of at least 192 credits points of courses including:
1. 48 units of the following professional development courses:
ENGN1211 Discovering Engineering (6 units)
ENGN2225 Systems Design (6 units)
ENGN3211 Investment Decisions & Financial Systems (6 units)
(or specified equivalent: BUSN1002 or ASHI2021 or ASHY2041 or ASHI2023
or POLS1004 or ECHI1105 or ECHI1106)
ENGN3221 Project & Operations Management (6 units)
ENGN4200 Individual Project (12 units)
ENGN4221 Systems Engineering Project (6 units)
ENGN4611 Engineering Law (6 units) (or specified equivalent: BUSN1101
or ASHI2268 or POLS1002 or ECHI1105 or ECHI1106) (6 units)
ENGN4005 Practical Experience (0 units)
2. 78 units of engineering discipline courses listed in Schedule 1, including ENGN1221 Electromechanical Technologies (6 units), ENGN1215 Introduction to Materials (6 units) and at least one engineering discipline major (42 units)
3. 12 units of mathematics, being
MATH1013 Mathematics & Applications 1 (or MATH1115) (6 units)
MATH1014 Mathematics & Applications 2 (or MATH1116) (6 units)
4. 12 units of computing, being
COMP1100 Intro to Programming & Algorithms (6 units)
COMP1110 Foundations of Software Engineering (6 units)
5. 6 units of physics, being
PHYS1101 Advanced Physics I (6 units)
6. 36 units of courses offered by the University.
7. The degree program may not include more than 60 units of 1000-series courses.
|
Logistics and Operational Systems OR |
||
Note: Subject to student enrolment the above listed courses may not be offered each year.
The 36 units of courses under Item 6 of the BE program requirements may be used by students to further their interests in other subject areas. The Faculty of Engineering and Information Technology has developed named engineering degrees in photonic systems and in environmental systems by incorporating non-engineering majors offered by the Faculty of Science in fulfillment of the requirements under Items 5 and 6 of the BE program requirements. These are the Photonic Systems major and the Environmental Systems major. Note that these majors cannot be counted towards Item 2 of the BE program requirements.
Note that the corresponding named degrees BE (Photonic Systems) and BE (Environmental Systems) may only be taken as a single degree, not as a combined degree.
|
Five recommended courses in Geographic Sciences, or five courses in Human Systems, |
||
Note: For details on the four different course patterns that may be followed satisfying the requirements of the Environmental Systems major please refer to the Engineering website http://engn.anu.edu.au or contact the Faculty of Engineering and IT.
|
Must include both the Robotics and Computer Vision major and the Manufacturing and Management Systems major. |
|
|
Must include the Manufacturing and Management Systems major. |
|
* Not available as part of a combined degree program.
ENGN1215 Introduction to Materials 6 units
ENGN1221 Electromechanical Technologies 6 units
ENGN2211 Electronic Circuits and Devices 6 units
ENGN2214 Mechanics of Materials 6 units
ENGN2221 System Dynamics 6 units
ENGN2222 Thermal Energy Systems 6 units
ENGN2223 Signals and Systems 6 units
ENGN3212 Manufacturing Technologies 6 units
ENGN3213 Digital System and Microprocessors 6 units
ENGN3214 Telecommunications 6 units
ENGN3222 Manufacturing Systems 6 units
ENGN3223 Control Systems 6 units
ENGN3224 Energy Systems Engineering 6 units
ENGN3225 Power Electronics 6 units
ENGN3226 Digital Communications 6 units
ENGN4535 Communication Networks 6 units
ENGN4536 Mobile Communications 6 units
ENGN4528 Computer Vision 6 units
ENGN4507 Semiconductor Technology 6 units
ENGN4519 Semiconductor Materials and Devices 6 units
ENGN4615 Finite Element Analysis 6 units
ENGN4532 Logistics and Operational Systems 6 units
ENGN4601 Engineering Materials 6 units
ENGN4511 Composite Materials 6 units
ENGN4524 Solar Energy Technologies 6 units
ENGN4516 Sustainable Energy Systems 6 units
ENGN4526 Optimal Filtering and Control 6 units
ENGN4512 Digital Signal Processing 6 units
Honours grades in the BE degree are awarded by the Faculty on the basis of a recommendation from the Head of Engineering and may be awarded with first class honours; second class honours, division A; or second class honours, division B.
The awarding of honours in engineering is based on meritorious performance over the entire four year program. The assessment of meritorious performance is based on the calculation of an average percentage mark (APM). The APM for Years 1, 2, 3 and 4 is the average, weighted according to unit value, of each ENGN1xxx, ENGN2xxx, ENGN3xxx and ENGN4xxx course respectively. The APM for Year 4 is the average mark awarded in ENGN4611, ENGN4221 and in each completed course unit from the engineering professional electives list.
The weighting factors 0.1, 0.2, 0.35 and 0.35 respectively, are used for the Years 1, 2, 3 and 4 APMs to give the overall APM.
|
COMP1110 Foundations of Software Engineering OR ENGN1225 Chemistry Fundamentals (3 units) and |
||||
Detailed recommendations for enrolment patterns for all BE programs including named degrees and majors are available on the Department of Engineering web site http://engn.anu.edu.au
The named degrees BE (Photonic Systems) and BE (Environmental Systems) are not available as combined degrees.
The Bachelor of Information Technology is a three-year degree that prepares graduates to enter the computing industry work force as novice practitioners to develop software or to apply computing in human organisations. The graduate attains the technical knowledge of fundamentals of computer systems, programming languages, computer systems, computer applications, and information systems. The computing industry has always been subject to very rapid change, and so we also aim to prepare graduates to meet the changes in practice and in technology that will be met during their working careers. The graduate can enter the fields of software development and support, information systems development and support, or many other broad areas of choice in computing or general industry.
The BInfTech degree is organised to allow a flexible choice between an Information Systems stream and a Software Development stream. Both streams are founded on an introduction to computer programming, a broad perspective on the computing discipline and profession, and an introduction to the functional structure of computers. Both also require at least 18 units of mathematics, which is a means of developing the ability to work with abstractions, a fundamental requirement for understanding and applying ideas in computing.
In later years of the course, students can choose the Software Development stream, to develop the conceptual and practical skills for software development and the technology of computer systems, or the Information Systems stream to develop understanding of organisations, the management of computer systems applications in them, and the accompanying systems analysis and design.
The degree requires the completion of 144 units of courses offered, or approved by, the Faculty of Engineering and Information Technology, including:
(a) completion of 90 units of IT courses (including the IT courses from Schedule 1 and the IT courses from a major chosen from Schedule 2), comprising a total of:
(b) completion of MATH1005 or alternatives as listed in Schedule1;
(c) completion of MATH1003 or alternatives as listed in Schedule 1 and 6 units of 2000-series mathematics courses;
(d) completion of a further 12 units of 2000/3000/4000-series IT courses;
(e) completion of a further 24 units of courses offered within the university, including the non-IT courses listed under the chosen major from Schedule 2;
(f) no more than 60 units of 1000-series courses may be included.
ENGN1211 Discovering Engineering
ENGN3213 Digital Systems and Microprocessors
ENGN3226 Digital Communications
COMP1100 Introduction to Programming and Algorithms
COMP1200 Perspectives on Computing or ENGN1211 Discovering Engineering
COMP1110 Foundations of Software Engineering
COMP2300 Introduction to Computer Systems
COMP2600 Formal Methods in software Engineering
COMP3110 Software Analysis and Design
MATH1003 Mathematical Modelling 1 or MATH1013 Mathematics and Applications 1 or MATH1115 Mathematics and Applications 1 Honours
MATH1005 Mathematical Modelling 2 or MATH1014 Mathematics and Applications 2 or MATH1116 Mathematics and Applications 2 Honours
INFS2024 Information Systems Analysis
INFS3024 Information Systems Management
BUSN1101 Introduction to Commercial Law
a) BUSN1001 Business Reporting and Analysis and BUSN1002 Accounting Processes and Systems
b) ECON1101 Microeconomics 1 and ECON1102 Macroeconomics 1
c) ECHI1005 Business and Economy in the Asia-Pacific Region and ECHI1006 Australian Economy
The BInfTech degree with honours requires an additional year of study after the pass degree of BInfTech. Admission is by invitation based on performance in your best 36 units of 2000 and 3000 series Information Technology and Mathematics units and generally requires an average performance at better than Credit level. The honours program includes advanced coursework and a major individual project worth 50% of the year. Honours grades are awarded on the result of the whole year's work.
[1] Some 3000/4000-series IT electives may have specific prerequisites that are not covered by the units specified in the table.
[1] 1000-electives to be chosen from one of the following 12 units options: COMM1010/1020 or ECON1001 or ECHI1005/1006.
[2] Some 3000/4000-series IT electives may have specific prerequisites that are not covered by the units specified in the table.
The Bachelor of Software Engineering is a four year degree which will be accredited by the Institution of Engineers, Australia. The course emphasises the development of professional skills in the technical area of software engineering, that is, the systematic application of analysis, design, and construction techniques for computer systems and applications.
The computing industry has grown very rapidly in the last 40 years, despite a widely acknowledged, continual state of crisis in our abilities to manage reliably the process of developing software. The need for a mixture of technical computing knowledge with the skills of the computer programmer, and the disciplined organisation and judgement of the professional engineer, has been seen as desirable for many years.
The introduction of the Bachelor of Software Engineering degree in 1999 was aimed to meet this need.
The BSEng graduate will acquire technical knowledge of the fundamentals of computer systems, programming languages, and the mathematical foundations of algorithms and data structures that are required to establish reliability and safety in software. Technical knowledge is honed by a selection of advanced technical topics. The principles and practices of the design and implementation of software are built up in a sequence of units combining theoretical study and practical laboratory exercises, individual projects, and group projects. Of no less importance is an introduction to the professional skills of a competent engineer: management, communication with others and teamworking in particular, and ethical and other responsibilities. Graduates will also build their own skills of individual software development in university studies and in practical work experience which is required during the course, and will learn a systems approach developed and exemplified in individual and group project work.
Mathematics is an essential component of the degree for developing the languages and ability for abstraction that is the core of the computing discipline, and to allow rigorous formal description of aspects of the software engineering process. Discrete mathematics also has significant applications in the modelling and rigorous description of software properties, computing processes and programming languages.
The best computing professionals are informed by knowledge of a wider field than computing alone. The course includes the choice of a major line of study in another discipline in the university which can broaden the understanding of the social and cultural responsibilities of the software engineer, and strengthen the ability to communicate with others, or may be used to specialise in further fundamental sciences, or in specialised engineering streams. Both develop the capacity for lifelong learning by exposure to a broader range of ways of studying at university level.
The BSEng degree requires completion of 192 units including
(a) completion of 114 units of core BSEng courses as follows:
COMP1100 Introduction to Programming and Algorithms
COMP1110 Foundations of Software Engineering
COMP2100 Software Construction
COMP2200 Technical Communication and Professional Context or ENGN1211 Discovering Engineering
COMP2300 Introduction to Computer Systems
COMP2310 Concurrent and Distributed Systems
COMP2600 Formal Methods in Software Engineering
COMP3500 Software Engineering Individual Project
COMP3110 Software Analysis and Design
COMP4510 Software Engineering Team Project Part I
COMP4520 Software Engineering Team Project Part II and ENGN4221 Systems Engineering Project OR COMP4530 Software Engineering Team Project
COMP1800, COMP2800, COMP3800 Art and Science of Computing I, II, III
COMP4800 Industrial Experience
ENGN3211 Investment Decisions and Financial Systems
MATH1013 Mathematics and Applications 1 or MATH1115 Mathematics and Applications 1 Honours
MATH1014 Mathematics and Applications 2 or MATH1116 Mathematics and Applications 2 Honours;
(b) completion of a further 30 units of Information Technology courses, with at least 15 units of 4000-series courses, selected from Tables A, B and C as follows:
(c) completion of 2000-series mathematics units to the value of 6 units;
(d) completion of further Science or Engineering units to the value of 12 units, excluding those offered by Computer Science;
(e) completion of a further 30 units, including at least 6 units of 3000- or 4000-series courses and not more than12 units of 1000-series courses, from anywhere in the university.
(f) no more than 60 units of 1000-series courses may be included.
IT units are COMP and INFS courses, ENGN3213, ENGN3214.
Table A refers to Software Engineering units, Table B refers to Foundation units, Table C refers to Design units. The contents of Tables A, B and C may be changed from time to time.
COMP3300 Operating Systems Implementation
COMP3320 High Performance Scientific Computation
COMP3400 Internet, Intranet and Document Systems
COMP3410 Information Technology in Electronic Commerce
COMP3610 Principles of Programming Languages
COMP3700 Topics in Software Engineering I
COMP3710 Topics in Computer Science
COMP4120 Component-based Software Development
COMP4200 Milestone Papers in Computing
COMP4210 Usability and Design of the Human-Computer Interface
COMP4410 Document Technologies
COMP4420 Networked Scientific Data Analysis and Presentation
COMP4620 Machine Learning and Data Mining
COMP4630 Applications of Logic in Computing
[1] units to be selected from Table B. Please note that some 3000/4000-series IT electives may have specific prerequisites that are not covered by the units specified in the table.
The Bachelor of Software Engineering (BSEng) program provides for students to choose: (a) 12 units Science or Engineering; (b) 30 units of courses (which must include at least 6 units at 3000-series level). The following suggestions are highlighted for BSEng students who want to consider engineering-related areas:
ENGN1214, ENGN1221, ENGN2211, ENGN2223, ENGN3214, ENGN4504, ENGN4512, ENGN4542, ENGN4543, ENGN4513
ENGN1214, ENGN1221, ENGN2211, ENGN2223, ENGN3213, ENGN3223, and choose 6 units from ENGN4509, ENGN4527, ENGN4528
ENGN1214, ENGN1221, ENGN2214, ENGN2221, ENGN3212, ENGN3222, ENGN4515, ENGN4518 (or, with permission, ENGN4520)
ENGN1214, ENGN1221, ENGN2211, ENGN2224, ENGN3213, ENGN4506, ENGN4507, ENGN4519, and, with permission, ENGN4520.
BSEng students who are pursuing elective interests outside the Faculty of Engineering and Information Technology are advised to consult the relevant section of the ANU Undergraduate Handbook and the relevant Sub-Dean or Departmental course adviser.
The Bachelor of Engineering degree is accredited to the appropriate level by the Institution of Engineers, Australia (IEAust). The Bachelor of Software Engineering degree has been submitted for accreditation with IEAust and the Australian Computer Society.
All students who complete the BInfTech degree are eligible for associate membership of the Australian Computer Society.
Detailed information about courses combined with the Bachelor of Engineering or the Bachelor of Information Technology degrees is provided in the Combined Courses section of this Handbook.
Note that there are no combined courses with the Bachelor of Software Engineering.
Status towards undergraduate degree courses of the Faculty may be granted for studies completed elsewhere. Requests for status are assessed individually.
C.W. Johnson, BSc Monash, PhD ANU
How do people understand and use computers? The subject matter of the computing discipline has many names, including software engineering, computer science, informatics, information systems, information technology, and computer programming. The discipline is only young, and the nature of the subject has been debated many times since the first electronic computers and the foundation of the first professional association in 1947. The nature of the discipline has changed in that time from a focus on computer hardware in a very small number of uniquely designed computers, and the highly specialised mathematical algorithms that were programmed into them, to the graphically interfaced, largely non-numerical, general purpose commodity computing of today's information technology industry. The focus of that industry has shifted from details of interaction with computers to the breadth of interaction with people, and so has the computing discipline broadened to include the ways in which its professional graduates apply computing to the information needs of organisations and individuals.
Information Technology is the common global term which covers all aspects of computing, data storage, and communications -- the generality of equipment, systems and services that involve the use of computers, advanced telecommunications, and digital electronics. The IT industry is now reckoned to be the world's largest. Although the Department's name continues to refer to "Computer Science," it is a centre for the study of wider aspects of IT: software engineering, which is the profession of designing and constructing complex groups of programs; information systems, which involves the ways in which computer systems are meshed with organisations; as well as computer science, the systematic study of the fundamental algorithms and processes behind the technology. The department provides professional, technical, and service courses in these areas and introductory information technology for students in many areas of the university.
The Department aims to produce graduates with a professional education in Software Engineering and a four year professional Software Engineering degree course has been offered since 1999. This includes technical, professional, communications skills, individual and group project work on a sound basis of mathematics and computer science. A pass degree or a degree with honours can be awarded after four years of study. The Faculty has submitted this course to the Institution of Engineers, Australia, for professional accreditation as an engineering degree.
The Faculty also offers a three-year technical and professional degree course, the Bachelor of Information Technology, in combination with the Faculty of Economics and Commerce. BInfTech students can choose to specialise in a software development stream or an information systems stream. The BInfTech course can also be combined with courses in Commerce or with Economics for a four year combined degree program which aims to provide a professional, business-oriented education. It can be combined with the Bachelor of Engineering course for five years of study that includes more computing within a full multidisciplinary Engineering degree. It is also possible to combine the BInfTech course with the BSc (Forestry) degree.
Many of the same computer science and software development units can be taken within the more generalist Bachelor of Science degree. Students can thereby combine study of a Science subject with as much computing as they wish. The specialised Bachelor of Computational Science degree combines several of these units with mathematics.
A fourth year of honours study can be added to the BSc and the BInfTech. In all of these degrees, the Department aims to produce first class honours graduates who can enter postgraduate studies at leading international computer science laboratories. A Graduate Diploma in IT for Science graduates with little computing background is also available.
The Department has an active research program and educates Master of Philosophy and PhD students by research.
The Department offers several units that can be taken by students with no previous background in computing or information technology. COMP1900 is an information technology service unit offered to students in other faculties, which provides a university-level introduction to applied computing for students in any area who wish to use computers in their studies or their careers but do not necessarily need to study computer programming. COMP1200 provides a broad perspective on the field of computing for those with a deeper interest in the underlying science and technology, and it is a required part of the Information Technology degrees. COMP2200 introduces the communication skills and other professional background for the Software Engineering degree.
COMP1100 provides an introduction to computer programming, both as a service course and as a foundation for all further studies in information technology. It assumes a prior knowledge of secondary college advanced mathematics, but does not require any previous computing experience. COMP1110 provides further study of programming and software engineering, consolidating the study of constructing larger programs. It leads to further software development and software engineering studies.
COMP2400 can also be taken in first year, following COMP1100. It provides an introduction to the use of databases and to their underlying technology. This unit can be used as part of a major in Commerce as well as contributing to Information Technology and Software Engineering degrees.
Further information on the units offered and the structures of the courses is available from the Department's World Wide Web site, at http://cs.anu.edu.au.
Thirty one-hour lectures. Twelve two-hour tutorial/laboratory sessions.
Assumed prior knowledge: ACT Advanced maths major or NSW 2 unit maths or equivalent.
Incompatible with COMP1011, ENGN1002, ENGN1213
Syllabus: This unit is an introduction to the basic principles of programming from an object-oriented perspective. These principles are applied in a study of straightforward algorithms for searching and sorting. It provides a foundation for studies in computer science, information systems and software engineering. The following topics are covered: basic concepts of programming (data types, assignment, control structures, the procedural abstraction), basic concepts of object-oriented programming in Eiffel (class, object, attributes, rountines), the basic Eiffel library classes, straightforward algorithms for search and searching, object-oriented methods (class inheritance, assertions on rountines, design by contract). The unit has a strong practical emphasis, with required attendance at laboratory sessions.
Twenty-six one-hour lectures and twelve two-hour tutorial/laboratory sessions
Prerequisites: COMP1100 or COMP1011
Incompatible with COMP2031, ENGN2003, ENGN1223
Syllabus: This unit introduces students to the tools and techniques for developing software systems of a size and quality of an industrially relevant nature. The unit teaches the fundamental strategies of abstraction, decomposition and reuse as methods for constructing such systems. Verification and validation techniques, with an emphasis on testing, are taught as a means to ensure that students are able to deliver software products of the quality required. In particular, the unit will cover: foundations and use of recursive algorithms in problem solving; structured data types, abstract data types and their applications; system life-cycle, modularisation, and construction of large systems. The unit will also introduce some of the theoretical fundamentals that underpin software engineering, including: logic and its application to specifications, and finite state automata.
Thirty one-hour lectures, twelve two-hour tutorial and laboratory sessions.
Syllabus: This unit presents the important concepts in the computing discipline and places them in context, in order to introduce the nature of the computing profession and the education of a computing professional.
The unit covers the following topics, through case studies. Abstractions and the user view: the interactive machine, the stored-program machine, data, programming languages and virtual machines, computational objects. Applications of computer systems: personal computation, application software, information systems, knowledge-based systems, real-time control. Computer systems and their environment: the personal computer, networked computers and concurrency, the world-wide web. The nature of the computing discipline: mathematical theory, scientific experimentation and engineering design. Professional issues: the engineering of software systems, the client focus, professional ethics. Educational issues: curriculum issues, the ANU experience.
About eight sessions of occasional seminars.
Prerequisites: Enrolment in BSEng or approval of Head of Department
Syllabus: The Art and Science of Computing I is a seminar-style program. It consists of about 4 events per semester, such as seminars from visiting or staff academics, or discussion or debate sessions on topical subjects. Other sessions might include learning and studying skills, talks from industry representatives, department and unit overviews, hot topics, and surveys. It aims to involve staff and students in debate on computing issues. Some sessions will be led by staff from areas such as the library, counselling, study skills, and other university resource centres.
First semester (may be offered in second semester also)
Twenty one-hour lectures, and six two-hour assessable laboratory sessions; plus one laboratory session for marking group project
Prerequisites: Not available to students enrolled in BInfTech or BSEng. Cannot be taken after successful completion of COMP1011, COMP1100 or INFS1014.
Syllabus: An introduction to the basic concepts and skills of computer literacy through modern applied information technology. Good data management and practices using files and folders; word processing using styles; data manipulation and display using spreadsheets; World Wide Web information searching; simple web site construction. Practical work will be done in supervised computer laboratory sessions.
Twenty-six one-hour lectures and twelve two-hour tutorial and laboratory sessions
Prerequisites: COMP1110 or COMP2031, and 12 units of 1000-level mathematics or mathematical statistics courses including MATH1014 or MATH1005
Syllabus: This unit is about the implementation and test phases of the software construction process. It is based around an individual project lasting the whole semester. In this project, students build a substantial application, relevant to their experience as computer users. The project is closely specified, and involves a graphical user interface. During the semester, students follow part (or all) of the Personal Software Process, learning time-management, planning, and quality control.
The following topics are covered: programming to precise specifications; the implementation milieu (configuration control, programming standards, documentation standards, literate programming, use of integrated programming environments); code review and inspections; test planning and procedures (derived from specification and design documents); object-oriented (Eiffel), procedural (C), and scripting (Bash) languages; GUI interfaces; the Personal Software Process.
Thirty one-hour lectures and twelve two-hour tutorial and laboratory sessions.
Prerequisites: COMP1110 or COMP2031, and 12 units of 1000-level mathematics or mathematical statistics courses including MATH1014 or MATH1005.
Syllabus: This unit is one of three units (COMP2100, COMP2110, COMP3110) which address constructive aspects of the software development process. It has a primary focus on the design phase.
The following topics are covered. Designing to specifications (ab initio design) and design recovery from source code (reverse engineering). The design milieu (notations, documentation standards, configuration control). Design techniques (structured, object-oriented, software architectures, design patterns). Design review and inspections. Design in the context of requirements change. Design metrics.
First semester (will not be offered in 2001)
Twenty four lectures, twelve two hour design classes, and twelve tutorials
Prerequisites: Enrolment in BSEng or permission of Head of Department.
Incompatible with ENGN1211, SCOM1001
Syllabus: About one third of this unit is dedicated to technical communication (verbal and written) for computing professionals. The purpose is to equip students with the necessary skills to communicate technical information to customers and colleagues with the necessary clarity and simplicity.
The unit will also cover the various social and ethical responsibilities of the computing professional. These include professional ethics, concern for information security and privacy, whistle-blowing, the role of professional societies, social responsibilities, knowing one's own limitations, the continuity of professional advancement, the role of the professional in educating society, and technical consultancy in public policy issues.
Legal issues will form a third focus of the unit, including risks and liabilities and intellectual property.
Thirty one-hour lectures and nine two-hour laboratory/tutorial sessions.
Prerequisites: COMP1110 or COMP1011; and 6 units of 1000-level MATH, STAT, EMET courses.
Syllabus: An introduction to the hardware and software components of a modern computer system. Comparisons of different types of instructions sets and corresponding addressing modes. Emphasis on the relationships among instruction sets, fetch and execute operations, and the underlying architecture. Introduction to the concept of interrupts, as well as the purpose and specifications of a control unit with respect to logic operations. Consideration of the physical implementation of large memory systems, together with the techniques of data storage and checking. Overall concepts of virtual memory, operating system functions, file systems and networks.
Virtual machines and the levels of machine organisation, the assembly and linking process and software libraries.
Thirty one-hour lectures, nine one-hour tutorials/laboratory sessions.
Prerequisites: COMP2100 or COMP2300 or COMP2031; 12 units of 1000-level mathematics or mathematical statistics courses.
Incompatible with COMP2029, COMP2032
Syllabus: This unit is concerned with the issues that arise when computational processes are supported in a computer system. The scope is broad enough to include discussion of all the layers of a computer system -- from the hardware to large information systems applications, and all sizes of computer system -- from systems as small as a single processor, to systems as large as the entire Internet. The principal areas of study are processes and process coordination, concurrency support in operating systems and high level languages, and distributed systems. The following topics are addressed: operating system structure, process management, interaction between system components (processes, devices and processors), mutual exclusion, concurrent programming, semaphores and monitors, inter-process communication, distributed systems, crash resilience and persistent data, deadlock, transaction processing.
Thirty one-hour lectures and six two-hour laboratory/tutorial sessions
Prerequisites: COMP1100 or COMP1011; and 6 units of 1000-level mathematics or mathematical statistics or microeconomic courses.
Incompatible with INFS2051, INFS3055
Syllabus: Introduction to the basic goals, functions, models, components, applications, and social impact of database systems applications. The unit introduces the relational model and the database query language SQL. Entity-Relationship Diagrams are introduced as a tool for conceptual modeling. Effective mapping of a conceptual model to a relational schema requires some appreciation of role of integrity constraints, and the impact of DBMS access schemes and query optimisation techniques.
Thirty one-hour lectures, eight one-hour tutorials and four two-hour laboratory sessions.
Prerequisites: COMP1110 and 12 units of 1000-level mathematics or mathematical statistics including MATH1005 or MATH1014.
Syllabus: This course presents some formal notations that are commonly used for the description of computation and of computing systems, for the specification of software and for mathematically rigorous arguments about program properties.
The following areas of study constitute the backbone of the unit. Predicate calculus and natural deduction, inductive definitions of data types as a basis for recursive functions and structural induction, formal language theory (particularly regular expressions, finite state machines and context free grammars), propositional programming language semantics and partial correctness, weakest preconditions and total correctness.
About eight sessions of occasional seminars.
Prerequisites: COMP1800 and enrolment in BSEng or approval of Head of Department.
Syllabus: The Art and Science of Computing II is a seminar-style program. It consists of about 4 events per semester, such as seminars from visiting or staff academics, or discussion or debate sessions on topical subjects. Other sessions might include talks from industry representatives, department and unit overviews, hot topics and surveys. It aims to involve staff and students in debate on computing issues.
As for COMP1800 except that events in Art and Science of Computing II will be targeted to those students in second year.
Fifty one-hour lectures and 300 hours of group project work.
Prerequisites: 24 units of 2000-level COMP courses including COMP2100, and COMP2110, and 6 units of 2000-level MATH or STAT or EMET courses.
Syllabus: This unit provides the student with project experience to complement the studies of the software development process in units COMP2100, COMP2110, COMP3110 and COMP3120.
Students work in small groups and participate in all the development phases (requirements analysis, design, construction, testing and documentation) of a nontrivial software system. As well, each group has to address the control of the development process by constructing and following a detailed software development management plan.
Thirty one-hour lectures and four or five two-hour laboratory sessions.
Prerequisites: 12 units of 2000-level COMP or INFS courses including at least one of COMP2110, COMP2038, COMP2400, INFS2051 and INFS3055, and 12 units of 1000-level MATH or STAT courses.
Incompatible with INFS2047, INFS2048, INFS3047, INFS3048.
Syllabus: This unit is one of three units (COMP2100, COMP2110, COMP3110) which address constructive aspects of the software development process. It has a primary focus on the software requirements and design phases. This unit provides a practical introduction to requirements analysis methods and design specification techniques that are either structured or object-oriented. The essential rationale for the requisite components of a number of such methods will be taught together with some techniques for their application. As always, the emphasis of applying any such method is to create, from a set of original requirements, a semi-formal representation or model of a system software specification that is unambiguous, consistent and understandable. The various techniques for achievement of such requirements and specifications often seem straight forward and even conceptually simple. However, despite the apparent simplicity of a technique, students will discover that a good deal of effort and diligence is required to produce accurate, meaningful, understandable and easily maintainable specifications. Software system requirements specifications are essential for creating and trading-off design specification alternatives. There are several representations available for specifying a software design. Some of these will be discussed and applied including some very recent approaches to design that allow for the inclusion of multiple architectural alternatives and simple verification. The latest design techniques place appropriate emphasis on accurate, semi-formal models, transformation rules and direct code generation. Whenever appropriate, computer-aided modeling tools will be used to reinforce the various concepts that are covered theoretically.
Thirty one-hour lectures and five two-hour laboratory sessions.
Prerequisites: COMP3110, INFS2047 or INFS3047, and 6 units of 2000-level MATH or STAT or EMET courses.
Syllabus: This unit addresses the control of the software development process. It is a companion unit to COMP2100, COMP2110 and COMP3110, which address constructive aspects of the process. COMP3120 addresses some of the initial tasks for effectively planning and managing the development process within which the techniques introduced in those units might be used.
The following topics are covered. Choosing or tailoring a software development life cycle. Constructing a software development plan. Applying techniques and tools for determining size, effort and cost of a software development. Constructing a schedule and determining resource requirements and allocations. Identifying, assessing and managing risks (including technical, schedule and resource risks). Choosing and using metrics for different purposes such as monitoring progress, controlling resources and estimating rework.
Twenty-six one-hour lectures and six one-hour tutorials and six three-hour laboratory sessions.
Prerequisites: COMP2300 and COMP2310, or COMP2030, and 6 units of 2000-level mathematics or mathematical statistics or econometrics courses.
Syllabus: This unit takes a detailed look at the services provided by, and the internals of, an existing operating system to see how each part is constructed and integrated into the whole. The lectures will also address recent literature describing advances in operating systems. The following topics are addressed: system programming and its facilities (including I/O, signals, job control, interprocess communication, sockets, transport layers, remote operations), system calls and their relation to the system libraries, process management and coordination, implementation of message passing, memory management, interrupt handling, real-time clocks, device-independent input/output, serial-line drivers, network communication, disk drivers, deadlock avoidance, scheduling paradigms, file systems, security.
Thirty one-hour lectures and six two-hour laboratory/tutorial sessions.
Prerequisites: 12 units of 2000-level COMP or INFS courses including COMP2300 or both COMP2031 and COMP1012, and 6 units of 2000-level mathematics or mathematical statistics or econometrics.
Incompatible with ENGN4514, COMP3036
Syllabus: This unit studies the standard models for the layered approach to communication between autonomous machines in a network and the main characteristics of data communication (transmission protocols) for the lower layers. It introduces several application layer protocols from a distributed systems viewpoint, and considers alternative lower layer methods such as ATM, and problem areas in the Internet protocol suite.
The following topics are included: introduction to communication network architectures (protocol hierarchies, layered services, the OSI model); the physical layer (transmission media, signal representation, limits to data capacity); the data link layer (error detection and recovery, point-to-point protocols); the medium access layer (protocols for Local Area Networks and satellite communication); the network layer (routing algorithms, congestion control); internetworking (addressing, internetwork routing and protocols, quality of service); the transport layer (connection-oriented transport layer services and protocols); application protocols for distributed systems.
Thirty one-hour lectures and nine two-hour tutorial/laboratory sessions.
Prerequisites: 12 units of 2000-level COMP courses including COMP2100 or COMP2300 or COMP2031 or ENGN2003, and 6 units of 2000-level MATH, STAT or EMET courses.
Incompatible with COMP3061, COMP3067.
Syllabus: This unit provides an introduction to High Performance Computing with an orientation towards applications in science and engineering. The dominant programming language in this application domain, FORTRAN95, will be taught within the context of numerical computing and the design and construction of sophisticated scientific software. The unit will study high performance computer architectures, including vector and parallel processors, and will describe how an algorithm interacts with these architectures. It will also look at practical methods of estimating and measuring algorithm/architecture performance.
The following topics will be addressed: the FORTRAN95 programming language; basic numerical computing from aspects of floating point error analysis to algorithms for solving differential equations; the engineering of scientific software; general high performance computing concepts and architectural principles; scalar and vector architectures and their memory structure; performance and programmability issues, and program analysis techniques for high performance computing; parallel computing paradigms and programming using the OpenMP standard; trends in HPC systems.