Please note: you are viewing unit and programme information
for a past academic year. Please see the current academic year for up to date information.
Unit name |
Software Tools |
Unit code |
COMS10012 |
Credit points |
20 |
Level of study |
C/4
|
Teaching block(s) |
Teaching Block 2 (weeks 13 - 24)
|
Unit director |
Dr. Bernhard |
Open unit status |
Not open |
Pre-requisites |
COMS10016 Imperative and Functional Programming
COMS10015 Computer Architecture
|
Co-requisites |
COMS10017 Object-Oriented Programming and Algorithms I
|
School/department |
School of Computer Science |
Faculty |
Faculty of Engineering |
Description including Unit Aims
This unit prepares students for their Software Product Engineering unit in Year 2, where they work in groups to create software that solves a problem for a real client. In this unit, students will learn a collection of tools and techniques individually, with the aim of integrating them into a whole product in Year 2.
In particular, we focus on the following areas:
- Effective software development workflow and associated tools, for example the command line, version control, build and dependency management systems.
- Development tools, for example editors and integrated development environments, compilers and linkers, debuggers and profilers.
- Effective development techniques, for example unit and integration testing, static analysis, continuous integration and deployment.
- Relational databases and the SQL language.
- The web: principles, protocols and languages (HTTP, REST; HTML, CSS), architecture of web applications.
- The cloud: what it is, how to use it, overview and features of one or more cloud providers.
This unit builds on and complements the programming units and their teaching of imperative, functional and object-oriented programming.
Intended Learning Outcomes
After completing this unit, students will be able to:
- Use professional software development tools and workflows.
- Automate the process of building and testing your software.
- Improve the quality of your own software through methods including debugging and testing.
- Develop web-based, data-driven applications.
- Apply principles and practices of database design.
- Employ relevant database technologies.
- Identify and compare the features of cloud computing systems.
Teaching Information
Teaching will be delivered through a combination of synchronous and asynchronous sessions, including lectures, practical activities and self-directed exercises.
Assessment Information
100% summer timed assessment.
Attending at least 75% of the labs and engaging with the lab work is a “must pass” hurdle for this unit.
Reading and References
Most reference material will be in the form of links to websites, not printed books. These links will be included in the unit materials.
The books below are meant as reference material – students are not required to purchase them.
- Karwin, Bill and Carter, Jacquelyn, SQL Antipatterns: Avoiding the Pitfalls of Database Programming (Pragmatic Bookshelf, 2010) ISBN: 978-1934356555
- Sanderson, Dan, Programming Google App Engine with Java: Build and Run Scalable Web Applications on Google’s Infrastructure (O’Reilly, 2015) ISBN: 978-1491900208
- McConnell, Steve, Code Complete: A practical handbook of software construction (2nd edition). (Microsoft Press, 1993) ISBN: 978-1556154843
- Duckett, Jon, HTML and CSS: Design and Build Websites (John Wiley & Sons, 2011) ISBN: 978-1118008188. This book doesn’t go as far as we do in the unit, but may be a useful reference for non-native English speakers.
- Robbins, Jennifer Niederst, Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics, 5th edition (O'Reilly Media, 2018) ISBN: 978-1491960202
- Chacon, Scott and Straub, Ben, Pro Git, 2nd edition (Apress, 2014) ISBN: 978-1484200766. Available free online at https://git-scm.com/book/en/v2