The University of Sheffield
Department of Computer Science

COM160 Computer Problem Solving and Object Oriented Design


The first part of this module introduces basic concepts of computer programming, through an introduction to problem solving and the development of simple algorithms using the programming language Python. The module will stress the importance of good programming style and good code design and will introduce how an object-oriented approach can help to achieve these aims.
The second part of this module introduces some of the fundamental principles of object oriented programming and software engineering using the Java Programming Language. In particular it covers the principles that underlie the structuring of software and introduces models of real-world systems. Techniques for developing sound programming techniques are introduced and applied.

Session Academic Year 2021/22
Credits 20
  • Blackboard quizzes and assessed labs
  • Multiple choice exam (at the end of the Semester 1)
  • Assignment (during Semester 2).
Lecturer(s) Dr Mark Hepple & Dr Siobhán North
  • to provide an introduction to the concepts of problem solving and developing algorithms;
  • to provide a grounding in the principles of programming, using the Python and Java languages;
  • to establish good programming style.
  • to introduce the main features of object-oriented programming
  • to develop the ability to construct Java programs from existing libraries, classes and objects;
  • to introduce some features of the Java Application Programmers Interface;
  • to develop good programming practice particularly with respect to reuse.
Objectives By the end of this course the students should:
  • be able to express algorithms using sequencing, conditional and iterative constructs.
  • be able to use basic data structures and produce programs employing them;
  • be able to design, implement and test programs in Python and Java;
  • demonstrate an understanding of object oriented approaches to software development;
  • be able to develop software solutions to well-defined problems using object oriented techniques;
  • be aware of the Java Collections Framework;
  • have an understanding of how Java can be used in industrial environment.
  • Be familiar with an Integrated Development Environment
  • introduction to algorithms and problem-solving;
  • introduction to imperative programming in Python;
  • control structures: conditionals, loops, functions;
  • data structures: arrays/lists, dictionaries;
  • introduction to object-oriented programming in Python and Java;
  • software development within an object-oriented framework;
  • the Java Collections Framework and its use.
Not open to students from the Department of Computer Science or students who are taking or have taken COM161 or COM162.
Teaching Method 1 lecture per week and 2 hours of supervised practical work per week, involving programming exercises in Python and Java;
Students are also expected to work in their own time.
Feedback Within 24 hours of Blackboard quizzes otherwise within the usual time limit of 3 working weeks.
Recommended Reading Python: There are a number of introductory texts/tutorials available free on the web. The following is suitable for student having no previous programming experience:

Online resources will be provided for both semesters.