CS5003 - Data Structures and Specialist Programming (2017/18)
|Module specification||Module approved to run in 2017/18|
|Module title||Data Structures and Specialist Programming|
|Module level||Intermediate (05)|
|Credit rating for module||30|
|School||School of Computing and Digital Media|
|Total study hours||300|
|Running in 2017/18||
This module further develops students’ knowledge and skills in developing software applications for solving real-world problems. It focuses on the data structures, the algorithms for data processing and the software technologies for building standalone, networked and Internet applications. The module is designed to enhance employability through the use of modern industrial tools and technologies, and familiarisation of software development life cycle.
Prior learning requirements
Successful completion of Level 4 or equivalent
The module aims are to:
1. Provide students with an understanding of theoretical concepts related to the use of data structures, algorithms, programming patterns and software infrastructure in a standalone, networked and Internet environment.
2. Develop students’ analytical skills in the context of processing, generating, transforming, transporting, storing, retrieving and presenting numerical and symbolic data.
3. Enhance students’ practical skill using appropriate methods and techniques in designing, programming and integrating software applications for data processing using appropriate user interface, internal data representation and persistent storage.
4. Provide students with an understanding of computer programs during the different stages of the software development lifecycle.
5. Enable students to apply analytical and practical skill in solving typical problems in a standalone, networked and Internet environment.
6. Optimise students’ professional experience and chances of employability through the use of appropriate current technologies, enterprise tools and Integrated Development Environments (IDEs) for software development.
- Data structures, such as arrays, linked lists, stacks, queues and trees
- Recursion, iteration, files, streams, sorting and searching algorithms.
- Error handling
- Design patterns eg MVC
- Software development environments
- Graphical User Interfaces
- Persisting Data using eg SQL, JDBC
- Client/server network programming using eg sockets.
- Web Client-side and Server-side Programming using eg servlets/JSPs
Learning and teaching
- Lectures for defining concepts, describing methods and discussing alternatives.
- Workshops for demonstrating software, configuring working environments, building solutions, discussing alternatives and acquiring hands-on experience.
- Coursework for reporting technical research and solutions, comparing alternatives and reflection.
- Use of a Virtual Learning Environment (VLE) for setting problems, providing feedback and submitting materials
- Demonstration of software solutions for evaluation and reflection
On successful completion of this module the student will be able to:
LO1: Specify suitable data structures, implement corresponding algorithms for data processing and estimate their complexity in terms of execution time and memory occupation.
LO2: Use appropriate program design patterns and implement interactive programs working in a standalone, client-side, server-side and client/server mode of operation.
LO3: Design and implement GUI for interactive programs using a standard API, such as Swing.
LO4: Manipulate external data sources for efficient storage, retrieval and exchange of persistent data in text, XML and database format using a suitable API, such as Xerces.
LO5: Build dynamic Web sites for server-side processing using standard API, such as Java servlets.
LO6: Interpret and transform design models specified using UML and XML into a working code using a suitable IDE for development, testing and deployment of software applications; standard APIs; and third-party software libraries, components and products.
LO7: Provide and justify proposed estimates of the trade-offs and critically evaluate the consequences at different stages of software product lifecycle.
The coursework will involve designing, implementing, testing and documenting software applications, and is aimed at developing students’ skills, knowledge, confidence and problem solving strategies [LO1-LO7].
The workshop materials, activities and feedback opportunities will be dedicated to supporting student learning and provide the impetus for tackling the coursework. Students will have the opportunity to demonstrate their solutions to the workshop exercises and receive regular feedback to enhance their learning. Formative diagnostic tests will also be provided to evaluate and monitor students’ progress.
Students’ overall understanding of the subject will be assessed through the end of year final exam [LO1 and LO7)
- Horstmann, C. (2012) Big Java Late Objects. Hoboken, NJ: John Wiley & Sons.
- Freeman, E. (2004) Head First Design Patterns. Cambridge: O’Reilly.
- Eckel, B. (2006) Thinking in Java. Upper Saddle River NJ: Prentice Hall.
- Sierra, K. (2005) Head First Java. Cambridge: O’Reilly.
- Goodrich, M. and Tamassia, M. (2010) Data Structures and Algorithms in Java. 3rd edn (or later). Hoboken, NJ: John Wiley & Sons.
- Hall, M. (2007) Core Servlets and JavaServer Pages, London: Prentice Hall.
- Deitel, H. and Deitel, P. (2007) Java How to Program, 7th edn (or later). Upper Saddle River NJ: Prentice-Hall.
Sedgewick, R. (2002) Algorithms in Java : Parts 1-4, Fundamentals, Data Structures, Sorting, Searching. London: Addison-Wesley