This
proposal lies somewhere between a revision and a new course.
Essentially, material in the first three computing courses our majors
see (COMP1011 Computing 1A, COMP1021 Computing 1B, and COMP2011 Data
Organisation) has been redistributed amongst three new courses
(COMP1911 Computing 1, COMP1921 Data Structures and Algorithms, and
COMP2911 Engineering Design in Computing 2) which will replace them.
This proposal has four objectives:
- To more
closely match the order in which material is presented in COMP1091 and
COMP2091 so that students in the common first year program will be able
to study alongside computing majors not in the program (eg BSc Comp and
SEng students). So that students will be able to move between the
programs without duplicating or missing important content.
- To increase the integration between our first three courses (currently each works largely in isolation)
- To
update the content coverage to reflect developments in discipline of
computer science and engineering since the current courses were
initially proposed. In particular to increase the emphasis on objected
oriented programming and to introduce material on objected oriented
design.
-
To increase the emphasis on a discipline of design in computing which
follows on from and supports the skills acquired in the new first year
faculty design course.
We are proposing
new course codes: COMP1911, COMP1921 and COMP2911, in order to make it
clear from transcripts who has covered which version of the courses
during the transitional period.
Specific remarks for COMP2911
Overview
The engineering design and use of data structures and their associated algorithms.
Object Oriented programming and design. Algorithm design
methodologies: backtrack, greedy method, divide and conquer, dynamic programming.
Examples are drawn from classical data structures (eg graphs, tables) and
more contemporary ones (eg objects, randomized data structures).
Students
- all CSE students
- non-CSE students with an interest in computing who have taken
COMP1921 Algorithms and Data Structures
Inputs
Can assume the outputs from COMP1911 Computing 1 and COMP1921 Data Structures and Algorithms
Students will be able to write small correct C programs with good style given a clear problem specification.
Students will be familiar with unit testing, debugging via print statements, simple unix commands, cse lab
familiarity. Students will be familiar with ADTs, simple data
structures (lists, trees, graphs) and algorithms in them. Students will
be familiar with computational complexity.
Prerequisites: COMP1911 Computing1, COMP1921 Algorithms and Data Structures
Corequisites: none
Outputs
Prequisite for:
COMP3111 Software Engineering,
COMP3121 Algorithms and Programming Techniques,
COMP3161 Concepts of Programming Languages,
COMP3231 Operating Systems,
COMP3311 Database Systems,
COMP3331 Computer Networks and Applications
COMP3411 Artificial Intelligence,
COMP4001 Object-Oriented Software Development
COMP3131 Programming Languages and Compilers
COMP3151 Foundations of Concurrency,
COMP3421 Computer Graphics,
COMP3431 An Introduction to Intelligent Agent Architectures,
COMP3441 Cryptography and Distributed Systems Security,
COMP3511 Human Computer Interaction,
COMP3710 Software Project Management,
COMP3221 Microprocessors and Embedded Systems
Corequisite for: none
Topics
- OO programming
- OO design
- selecting data structures and algorithms
- designing data structures
(including examples drawn from randomized data structures, hash tables)
- algorithm design: divide and conquer, dynammic programming, greedy method.
Skills
- converting problems -> algorithms
- analyse program time/space efficiency theoretically and empirically
- groupwork
- version control
- programming style and quality control
Assurance - What
At the end of the course students MUST be able to:
- design effective solutions to problems using OO
- implement and analyse data structures based on trees, lists, tables, graphs
- select appropriate data structures and algorithms for problems
- calculate empirically and/or theoretically the time and space efficiency of simple programs.
- calculate and understand the implications of bounds on the complexity of simple problems.
Assurance - How
- assessed lab exercises
- two or more assignments including a group project
- formal exam
|