This paper continues from COMP103, assuming a knowledge of basic programming techniques, which it expands on particularly in the areas of data organisation and algorithms. It also provides an introduction to: code contracts, computer architecture, Boolean algebra, assembly language, program analysis, and object-oriented programming.

Learning OutcomesStudents who pass COMP104 will be able to design and implement C# programs, using object-oriented features such as multiple classes, associations between classes, inheritance and subtyping. They will be able to give an overview of how various high-level C# features can be implemented using low-level machine code of a typical computer.

Summer School
Assignments will be verified during the Tuesday or Wednesday lab session following their deadline. Exact dates will be announced for each assignment. Students are required attend and explain their solution to the lecturer on this occasion.Students who fail to show for verification of an assignment will receive 0 marks for that assignment.

Workload

Summer School
Students should expect to spend about 20 hours per week for this class, 6 hours attending lectures, 8 hours working on assignments in laboratories, and 6 hours of private studies. In addition, they should spend about 30 hours preparing for the final exam.

Students who have not taken the prerequisite paper COMP103 are recommended to prepare by reading Chapters 1-10, 12, 16, and 18 of this book before teaching starts.

Computing ResourcesThe computing laboratory for this course is Computing Lab 3
(R G.10). It is equipped with Windows Personal Computers. The programming environment will be Microsoft Visual Studio 2013. Commercial and purpose-built software will be provided as required for the practicals. Printing, email and web access is available but will be charged for through the Unicash charging system and Lightwire.
The Computer Laboratories are available to enrolled students Monday to Friday 8:00-21:00. A schedule of supervised and free time will be posted on the lab doors. Prior to 8:00, after 21:00, and on weekends, a Cardax 'Swipe' card will be required for access. Students found in the lab at these times without a card will be removed.

Means of Assessment

Summer School
Internal assessment consists of weekly programming assignments. Detailed descriptions will be handed out during the Monday lectures; the assignments will then be due Monday the following week, and will be verified during the lab session on Tuesday or Wednesday.
The forth assignment will be replaced by a theory test of one hour duration, held in class on Friday 30 January.
The last assignment is a larger project, and students will be given two weeks to complete it. However, there will be a verification session in the Monday lab after the first week, during which students need to be able to explain their design and demonstrate their progress.
Students will also be required to complete six quizzes online in Moodle, the first of which will be due on Friday 9 January.
In addition, all students are required to sit a final exam.

An overall mark of 50% is required for a pass, with a minimum of 40% in the final exam. Also, the practical programme must be completed to the satisfaction of the coordinator for the paper.

Assessment RatioInternal assessment/final examination ratio 2:1 or 1:2, whichever works in your favour. The practical programme must be completed to the satisfaction of the co-ordinator for the paper.

Assessment Components

Summer School

Assignment 1

worth 16%

due Monday 12 January 2015, 11:00

Assignment 2

worth 16%

due Monday 19 January 2015, 11:00

Assignment 3

worth 16%

due Tuesday 27 January 2015, 11:00

Test

worth 16%

held Friday 30 January 2015, 11:00

Assignment 4

worth 30%

due Monday 16 February 2015, 11:00

Online Quizzes

worth 6x1%

due Fridays

Grading ScheduleNumerical marks will be used to grade assignments and tests, with detailed schedules provided with each assessment item. The weighted total of marks over all assessment item will determine your grade based on the University grading schedule.

Assessment DeadlinesAssignment submission deadlines are firm. Late submissions will not be accepted.

Hand in and Return of AssignmentsAll assignments will be submitted electronically through Moodle, plus source code printouts and screenshots are to be submitted in a drop-in box in front of room G 1.15. Programming assignments are graded based on your submitted work and on your answers during the following verification lab session. Grades are awarded at the end of verification.

Attendance PolicyClass attendance is expected. The lecture material, tutorials and laboratory practicals are all integral parts of the course. Failure to attend any of these means the student may miss material not presented elsewhere. Students are responsible for all material covered in class.