COMP211P - Introduction to Programming
This database contains 2016-17 versions of the syllabuses. For current versions please see here.
|Taught By||Rae Harbird (100%) |
This is a module for students with no prior experience of programming from any UCL Department with an interest in learning to code. Places will be allocated on a first come, first served basis.
The primary objective of the course is for students to engage in problem solving activities using programming as the tool; a process known as computational thinking. The programming language used in the course is Java and the primary learning outcomes are that the students become adept at applying such problem solving techniques and understand how programming could be applied in their own engineering discipline.
Coding is very practical in nature and, whilst students will read textbooks and study lecture material, it can only be learned through doing (practising). For this reason students will gain experience with coding via hands-on engagement on a weekly basis. Each week, or stage, serves as a checkpoint that progress is being made and the stages get more difficult as the term progresses.
Using software to solve problems, including strategies for structuring code, dividing problems up into pieces that can be solved independently, then integrating the pieces into a whole to solve a large problem.
Using data structures such as arrays and lists as a framework for solving a problem and understanding when to select the different types of data structures.
These are skills that can only be learned through doing. The intended learning outcome is that the students become adept at applying the above skills.
The expected task outline is as follows. The content may be varied according to the progress made by the students.
Week 1: First tasks including setting up and using an Integrated Development Environment. Learning what a program is and how to write, run and debug one.
Week 2: Introduction to concept of object-oriented programming and data types. Elementary programming constructs: sequence, conditions, loops.
Week 3: Writing object-oriented code using classes and methods. Scope of variables in a program.
Week 4: Data structures: arrays, lists and other containers. Writing and running automated tests and documenting code.
Week 5: Algorithms including searching and sorting.
Week 6: Reading week: no labs or lectures.
Week 7 & 8: Prototyping using wireframes. Testing on a mobile device.
Week 9, 10 & 11: Programming apps for mobile devices using technologies like XML and SQL databases.
Method of Instruction:
There will be a strong emphasis on the tutorials / labs. There will be a two-hour lab session for each student every week, these sessions will be staffed by TAs. Each week there will be a specific problem set that must be achieved. Students will write code in pairs, with most pairs remaining the same throughout the course. (This is known as pair-programming). A problem set will be introduced with a short video illustrating the set, and a set of lab notes explaining what is expected and providing sufficient information to attempt the task. The videos and lab notes will be available via Moodle in advance, and the students should have reviewed them before attending the labs and, ideally, to have started to solve the problems. At the end of the week, the students will demonstrate briefly to the TA what has been achieved. Most tasks are binary marked.
The course has the following assessment components:
- Coursework and an exam held in the class half way through (100%).
To pass this course, students must:
- Obtain an overall pass mark of 40% for all components combined.
The assessment consists of 3 parts:
- Completion of 5 binary marked tasks – 15%;
- 1 x Exam taken in class – worth 20%;
- Project - worth 65%.
The project involves designing and developing a mobile phone app which is large enough to be challenging. Support with app development in the labs / tutorials will be provided after Reading Week so that at no point would this activity be too open-ended for the student.
Please consult the relevant Moodle page for this module for further information.