Skip to main content

Unit information: Software Tools in 2020/21

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:

  1. Use professional software development tools and workflows.
  2. Automate the process of building and testing your software.
  3. Improve the quality of your own software through methods including debugging and testing.
  4. Develop web-based, data-driven applications.
  5. Apply principles and practices of database design.
  6. Employ relevant database technologies.
  7. 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

Feedback