Syllabus
Your instructor
Learning objectives
- Analyse and solve problems using computational thinking, applying fundamental concepts of computer science
- Design and implement algorithms in different programming languages
- Evaluate and improve the correctness, design, and style of code
- Synthesise knowledge of programming concepts to create apps
- Apply the principles of data management for the storage and retrieval of information
Meetings
Scheduled meetings will be held in person in Telford, Station Quarter. Autumn 2025: Check your personal schedule for room, day, time.
Lectures will introduce the topic and sometimes involve live coding demonstration of key concepts. Lectures will be delivered in person, and will be recorded and made available on the module website.
Tutorials will demonstrate concepts discussed in lectures to various scenarios, with a focus on the problem solving. Tutorials will be demonstrated and should also be completed individually. That is, run the code yourself.
Material may be livestreamed to the YouTube channel and recorded for later viewing.
Online resources
All lecture notes, assignment instructions, an up-to-date schedule, and other course materials may be found on the module website.
Harper Adams module website (university enrolled students only, requires login)
- Discord - join the community - for live discussion and support
- GitHub - the module repository - for the module materials
- YouTube - The Statistics Lab channel - for live streams and recordings
- Twitch - the DataGiri channel - for live streams and recordings
- Twitter - Follow Edโs account - for information, and memes
Assessments
Assessment 1
Homework: These homework problem sets will typically be distributed throughout the module and are designed to test the grasp and application of programming concepts ranging from basic syntax to topics like data structures and algorithms. Each set will consist of practical tasks involving various programming challenges.
Assessment 2
Project: This is an opportunity to apply programming skills in developing your own software solution. This project encourages creativity and innovation, allowing you to choose an appropriate programming language and build an application that is personally meaningful, solves real-world problems, or potentially impacts the community or world at large.
For the project you can opt to work individually or collaborate with up to two other classmates, with the expectation that each member contributes equally to the project design and implementation. The complexity of the project should reflect the size of the group, with group projects expected to be more intricate than individual ones. The final project is assessed based on the project complexity and scope, the effectiveness of the implemented solution, creativity, and the overall quality of the code. For group projects, the assessment also considers individual contributions and the collaborative effort. NB for group projects, the scope and ambition of the project should reflect the size of the group.
Readings (optional)
While there is no textbook for the module, these may be of interest.
Blogs
Julia Silgeโs Blog :: Andrew Gelmanโs Blog :: Simply Statistics :: R bloggers :: Ethan Mollickโs Blog
Books
Bentley, J., 1988. More Programming Pearls: Confessions of a Coder: Confessions of a Coder. Addison-Wesley Professional, Reading, Mass.
Bhargava, A., 2024. Grokking Algorithms. Manning Publications, Shelter Island, NY.
Hermans, F., 2021. The Programmerโs Brain: What every programmer needs to know about cognition. Manning, Shelter Island, NY.
Hunt, A., Thomas, D., 1999. The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley Professional.
Kenett, R.S., Redman, T.C., 2019. The Real Work of Data Science: Turning data into information, better decisions, and stronger organizations. Wiley, Hoboken$cChichester.
McConnell, S., 2004. Code Complete: A Practical Handbook of Software Construction, Second Edition. Microsoft Press, Redmond, Wash.
Five tips for success
Your success on this module depends very much on you and the effort you put into it. Like any learning, the burden of engaging with the material is on you. The module staff and I will help you be providing you with materials and answering questions and setting a pace, but for this to work you must do the following:
- Complete all the preparation work before class.
- Ask questions. As often as you can. In class, out of class. Ask me, ask the TAs, ask your friends, ask the person sitting next to you. This will help you more than anything else. If you get a question wrong on an assessment, ask us why. If youโre not sure about the homework, letโs talk about it. If you hear something on the news that sounds related to what we discussed, share it and letโs discuss. If the reading is confusing, ask.
- Do the readings.
- Do the homework and the tutorials. The earlier you start, the better. Itโs not enough to just mechanically plow through the exercises. You should ask yourself how these exercises relate to earlier material, and imagine how they might be changed (to make questions for an exam, for example.)
- Donโt procrastinate. If something is confusing to you in Week 2, Week 3 will become more confusing, Week 4 even worse, and eventually you wonโt know where to begin asking questions. Donโt let the week end with unanswered questions. But if you find yourself falling behind and not knowing where to begin asking, ask for help, and let us help you identify a good (re)starting point.
Module policies
The essence of all work that you submit to this course must be your own. Unless otherwise specified, collaboration on assessments (e.g., assignments, labs, problem sets, projects, quizzes, or tests) is not permitted except to the extent that you may ask classmates and others for help so long as that help does not reduce to another doing your work for you. Generally speaking, when asking for help, you may show your work to others, but you may not view theirs, so long as you and they respect this policyโs other constraints.
Reasonable
- Communicating with classmates about assessments in English (or some other spoken language), and properly citing those discussions.
- Discussing the courseโs material with others in order to understand it better.
- Helping a classmate identify a bug in their code, as by viewing, compiling, or running their code after you have submitted that portion of the pset yourself.
- Incorporating a few lines of code that you find online or elsewhere into your own code, provided that those lines are not themselves solutions to assigned work and that you cite the linesโ origins.
- Sending or showing code that youโve written to someone, possibly a classmate, so that they might help you identify and fix a bug.
- Submitting the same or similar work to this course that you have submitted previously to this course.
- Turning to the web or elsewhere for instruction beyond the courseโs own, for references, and for solutions to technical difficulties, but not for outright solutions to assigned work.
- Using AI-based software to ask questions, but not presenting its answers as your own.
- Whiteboarding solutions with others using diagrams or pseudocode but not actual code.
- Working with (and even paying) a tutor to help you with the course, provided the tutor does not do your work for you.
Not Reasonable
- Accessing a solution to some assessement prior to (re-)submitting your own.
- Accessing or attempting to access, without permission, an account not your own.
- Asking a classmate to see their solution to some assessment before submitting your own.
- Failing to cite (as with comments) the origins of code or techniques that you discover outside of the courseโs own lessons and integrate into your own work, even while respecting this policyโs other constraints.
- Giving or showing to a classmate a solution to an assessment when it is they, and not you, who is struggling to solve it.
- Paying or offering to pay an individual for work that you may submit as (part of) your own.
- Providing or making available solutions to assessments to anyone, whether a past, present, or prospective future student.
- Searching for or soliciting outright solutions to assessments online or elsewhere.
- Splitting an assessmentโs workload with another individual and combining your work.
- Submitting (after possibly modifying) the work of another individual beyond the few lines allowed herein.
- Submitting the same or similar work to this course that you have submitted or will submit to another course, unless explictly allowed.
- Using AI-based software (including ChatGPT, GitHub Copilot, the new Bing, et al.) that suggests answers or lines of code.
- Viewing anotherโs solution to an assessment and basing your own solution on it.