This module is taken by all first year undergraduate students undertaking a degree in the computing subject area. Previous experience of programming is not assumed. The module seeks to introduce a foundation for programming that can be built on in subsequent years and that accommodates specialist practice within computing eg games, software engineering, media, UX etc.
Teaching and learning is split between a variety of different units to ensure the module is flexible enough to accommodate each cohort and student's needs. As befits a practical discipline like programming, a hands-on approach is used that facilitates self-paced and self-directed learning. Students are encouraged to engage with, develop and experiment with programs in a constructivist fashion inspired by bricolage (Stiller, 2009; Stiller, 2017).
The intent is to build students' confidence as they learn to program, and provide a foundation that can be built on so that in later years they can go beyond simple solutions to problems and be ready to engage in full-fledged application development.
On successful completion of the module, students will be able to:
The module material will be divided into several different units of taught material. The first topic will be the primary Thinking Like A Programmer unit in which the basic principles and concepts are established in a (mostly) language agnostic fashion. Subsequent units will introduce several real-world programming languages; the selection of which languages are used will be informed by pedagogic need and current industry practices.
Programming is a practical discipline. In keeping with this the module adopts a hands-on approach where students are expected to learn through direct engaging with programming tasks. Each week teaching will include one lecture and one workshop. The lecture will be used to establish certain concepts and the subsequent workshop will involve students engaging with practical activities designed to reinforce their learning. Students will be expected to examine example code, modify example code and author original code of their own. They will start with relatively small programs designed to illustrate a single programming construct or concept, gradually move to code that incorporates several and eventually build up to complex programs that could be considered small applications in their own right.
Each and every activity the student undertakes during the module will contribute to their assessment. In lectures, students will undertake activities designed to test their understanding of theoretical concepts. In practical workshops, each programming activity "counts" regardless of its size or complexity. All of these activities combine to build a portfolio across the whole module which is summatively assessed.
Definitive UNISTATS Category | Indicative Description | Hours |
---|---|---|
Scheduled learning and teaching | Lectures and practical workshop sessions | 88 |
Guided independent study | Continuation/completion of practical workshops online; further materials eg. videos, quizzes | 212 |
Total (number of credits x 10) | 300 |
The module adopts a hands-on portfolio-based approach as befits a practical discipline like programming. Students assemble a portfolio of solutions to small programming challenges, designed to gradually build understanding of programming constructs, concepts and techniques over the course of the module. At appropriate points, students will build small applications to further showcase their understanding and ability to independently bring several constructs/concepts together. The portfolio is further supplemented with in-lecture activities. All assessment is summative - students earn credit for each and every activity they undertake. This means that assessment becomes a "slow burn" and, combined with the absence of single large pieces of assessment, there are many opportunities over the year for students to maximise their potential and learn from their mistakes. Feedback is an intrinsic part of this approach and will similarly be given on a constant basis, given not only by lecturers during workshop sessions but also automated through systems such as NoobLab, Canvas etc. Feedback on overall progress and the growing portfolio and feed forward on how best to enhance the portfolio in the future represents an additional opportunity for formative learning; this will be given in writing and/or verbally at regular and appropriate points during the module (eg. at the end of a unit).
Learning Outcome | Assessment Strategy |
---|---|
Decompose a programming task into a set of smaller sub-tasks | Assessed predominantly through the activities in the early weeks of the module during the Thinking Like A Programmer unit. |
Demonstrate an understanding of the relevant structure and syntax of at least two programming environments | Practical programming challenges and in-lecture activities span multiple programming languages. |
Read code that is provided, understand the key constructs involved and how these combine to create a program flow | This is split between practical programming tasks involving example code, and in-lecture activities such as MCQs |
Write programs that demonstrate the appropriate use of variables, arrays of variables, expressions, subroutines, conditional and iterative control flow structures and that demonstrate an understanding of elementary object-oriented concepts such as classes and objects. | Most practical programming tasks in the students' portfolios will involve this learning outcome. |
Write programs that interact with an end-user and provide alternate program flows based on these interactions | Many practical programming tasks in the students' portfolios will involve this learning outcome. |
Use debugging strategies and write tests to find errors and validate programs using appropriate tools and techniques | There are practical programming tasks particularly in the second half of the module which explicitly deal with testing and debugging. Students will also engage in these processes throughout the module as they attempt to find and correct errors in their own code. |
Description of Assessment | Definitive UNISTATS Categories | Percentage |
---|---|---|
Portfolio of in-class activities: small practical programming exercises; simple application implementations; responses to (clicker-based) questions during lectures | Coursework | 100% |
Total (to equal 100%) | 100% |
It IS a requirement that the major element of assessment is passed in order to achieve an overall pass for the module.
Horstmann, C (2012), Big Java (Late Objects), Wiley.
Duckett, J (2011), HTML and CSS: Design and Build Websites, Wiley.
Duckett, J (2014), Javascript and JQuery: Interactive Front-end Web Development, Wiley.
Savitch, W and Mock K (2015) Absolute C++, Pearson
Ullman L (2016), PHP for the Web, Press.
Horstmann, C (2012), Java for Everyone (Late Objects), Wiley.
Vickers, P (2008), How to Think Like A Programmer - Problem Solving for the Bewildered, Cengage Learning.