Locked History Attachments

Diff for "COMP2911"

Differences between revisions 15 and 16
Revision 15 as of 2010-02-23 18:13:24
Size: 2894
Comment:
Revision 16 as of 2010-02-23 21:05:58
Size: 4957
Comment:
Deletions are marked like this. Additions are marked like this.
Line 36: Line 36:
== Assumed Knowledge ==

We assume you have mastered the material covered in COMP1917 and COMP1927. In particular that you
 * can write multi-file C programs of up to several hundred lines long,
 * can go from specification to code when programming in the small,
 * start programming assignments as soon as they are released,

 * understand pass by reference vs pass by copy,
 * know the standard cs data structures (and the standard algorithms on them) such as list, stacks, queues, trees, heaps, priority queues, graphs, tables, and hash tables, and the design issues and tradeoffs involved with using them,
 * understand recursion and can write recursive programs and implement recursive data types,
 * understand algorithm complexity and big oh classes (space and time)
 * determine the complexity of programs given their source code
 * determine the complexity of program by observing them in execution
 * can design solutions for larger problems using abstraction and interfaces
 * understand abstraction,
 * understand the concepts behind ADTs and their use in software design process,
 * distinguish between well-written programs and poorly written programs
 * test and debug programs using a unit testing methodology
 * work in a team to develop quality software
 * use assertions,
 * can use the Unix environment,
 * understand and write your code to comply with comply with the CSE style guide,
 * write clear programs using good programming style

The weekly tasks and the project will make use of the prerequisite material. If you have problems with these, or if you have any gaps with the other material listed above it is up to you to identify the shortfalls and to work to fix them as quickly as possible.

If you have not taken COMP1927 previously you need approval from the lecturer before you can take COMP2911. In any case if you are are at all unsure about whether or not you have sufficient background to take 2911 you should talk to the lecturer or your tutor about this as quickly as possible to check.

COMP2911: Design in Computing

Course Material

2010 s1
current session

2009 s2

2009 s1

2008 s2

2008 s1

2007 s2

2007 s1

Overview

After completing COMP2911 you should:

  • Understand the engineering design process
  • Have an appreciation of the role of design in computing
  • Work effectively in teams to design and implement solutions to large problems
  • Select and/or design the appropriate algorithms/data structures/class hierarchies when developing software to solve non-trivial new and unfamiliar problems

Specific Skills

  • Understand the fundamentals of Object Oriented (OO) programming.
  • Design OO solutions for larger problems using abstraction and interfaces.
  • Be able to appropriately reuse code using inheritance.
  • Understand the issues involved in designing classes in an OO system.
  • Distinguish between well-designed OO programs and poorly designed OO programs.
  • Be aware of and make appropriate use of the most common design patterns in your class designs.
  • Understand the most common algorithm design methodologies, and their strengths and weaknesses
  • Appreciate when to select existing algorithms and when to design new ones.
  • Be able to design reasonable algorithms to solve a range of problems.
  • Be able to successfully develop large projects in teams using agile methods.
  • Engage in effective pair programming.
  • Follow a style guide and engage in effective code review.
  • Understand and effectively use: program by contract, test driven development, and refactoring.
  • Use an IDE.
  • Program in Java.

Course Coverage

Assumed Knowledge

We assume you have mastered the material covered in COMP1917 and COMP1927. In particular that you

  • can write multi-file C programs of up to several hundred lines long,
  • can go from specification to code when programming in the small,
  • start programming assignments as soon as they are released,
  • understand pass by reference vs pass by copy,
  • know the standard cs data structures (and the standard algorithms on them) such as list, stacks, queues, trees, heaps, priority queues, graphs, tables, and hash tables, and the design issues and tradeoffs involved with using them,
  • understand recursion and can write recursive programs and implement recursive data types,
  • understand algorithm complexity and big oh classes (space and time)
  • determine the complexity of programs given their source code
  • determine the complexity of program by observing them in execution
  • can design solutions for larger problems using abstraction and interfaces
  • understand abstraction,
  • understand the concepts behind ADTs and their use in software design process,
  • distinguish between well-written programs and poorly written programs
  • test and debug programs using a unit testing methodology
  • work in a team to develop quality software
  • use assertions,
  • can use the Unix environment,
  • understand and write your code to comply with comply with the CSE style guide,
  • write clear programs using good programming style

The weekly tasks and the project will make use of the prerequisite material. If you have problems with these, or if you have any gaps with the other material listed above it is up to you to identify the shortfalls and to work to fix them as quickly as possible.

If you have not taken COMP1927 previously you need approval from the lecturer before you can take COMP2911. In any case if you are are at all unsure about whether or not you have sufficient background to take 2911 you should talk to the lecturer or your tutor about this as quickly as possible to check.

Student Resources

Staff Resources


CategoryCourseHomePage