|
||||||||||||||||
View general information Description The subject within the syllabus as a whole Professional fields to which it applies Prior knowledge Information prior to enrolment Learning objectives and results Content View the UOC learning resources used in the subject Guidelines on assessment at the UOC View the assessment model | ||||||||||||||||
This is the course plan for the first semester of the academic year 2023/2024. To check whether the course is being run this semester, go to the Virtual Campus section More UOC / The University / Programmes of study section on Campus. Once teaching starts, you'll be able to find it in the classroom. The course plan may be subject to change. | ||||||||||||||||
Data structures are abstractions used in computer science to represent information, much like how nature organizes and stores data. To illustrate this concept, let's draw an analogy with means of transport. We have various options for moving people or objects, each with its own characteristics.
A bicycle, for example, is sustainable and ideal for short journeys, but it can only transport one person. A car offers greater range but has limited capacity for carrying people or objects. A bus increases the ability to transport people and offers more autonomy. A truck, on the other hand, excels at carrying objects but is not suitable for transporting people. An airplane provides high passenger capacity, increased autonomy, but also higher costs. River transport allows for even greater storage capacity. These examples give us an idea of which option, given a specific need and the available tools, would be the most "efficient." Nature also offers inspiration for data organization. Traditional paper dictionaries, queues forming at events, stacks of dishes in a sink, or heaps of stones or fruits collected from a tree are examples of natural structures that can inform our understanding. This course delves into various data structures for representation on a computer. It also provides design tools and criteria to make informed choices and determine the efficiency (in terms of time and space) of these structures. Through the development of a pre-designed case study, you will have the opportunity to apply and deepen your understanding of these concepts. |
||||||||||||||||
Data Structures is a mandatory course that builds upon the knowledge acquired in previous programming courses. In those courses, basic data structures like lists, stacks, and queues were introduced. This course expands upon that foundation and introduces the concept of abstract data types (ADTs) as a general model for describing data structures and studying their efficiency. The main focus of the course is to learn how to effectively utilize each data structure and to understand the process of selecting the most appropriate one for different situations. The data structures covered in this course will prove invaluable in future courses, particularly when developing software where efficiency plays a crucial role. |
||||||||||||||||
The design of data structures is an essential skill in the field of software development, particularly in systems where efficiency is of utmost importance. Well-designed data structures lay the foundation for optimal performance, allowing software to process and manipulate large amounts of data with speed and efficiency. By carefully selecting and implementing appropriate data structures, developers can significantly impact the overall efficiency and performance of their software systems. Therefore, mastering the art of designing efficient data structures is crucial for creating robust and high-performing software solutions. |
||||||||||||||||
This course assumes a solid understanding of fundamental algorithm concepts such as assignments, conditionals, and loops. Proficiency in programming using the imperative paradigm, including familiarity with compilers, debuggers, and integrated development environments (IDEs), is also expected. Moreover, a strong foundation in object-oriented programming, particularly in Java, is essential for successful completion of this course. |
||||||||||||||||
Prior to enrolling in this course, it is highly recommended that you have successfully completed the following prerequisite courses:
|
||||||||||||||||
This course has the following objectives:
This course addresses the following competences of the Bachelor's Degree in Techniques for Software Development:
|
||||||||||||||||
|
||||||||||||||||
|
||||||||||||||||
The assessment process is based on students' own work and the assumption that this work is original and has been carried out by them. In assessment activities, the following irregular behaviours, among others, may have serious academic and disciplinary consequences: someone else being involved in carrying out the student's assessment test or activity, or the work being not entirely original; copying another's work or committing plagiarism; attempting to cheat to obtain better academic results; collaborating in, covering up or encouraging copying; or using unauthorized material, software or devices during assessment. If students are caught engaging in any of these irregular behaviours, they may receive a fail mark (D/0) for the assessable activities set out in the course plan (including the final tests) or in the final mark for the course. This could be because they have used unauthorized materials, software or devices (e.g. social networking sites or internet search engines) during the tests, because they have copied text fragments from an external source (internet, notes, books, articles, other student's projects or activities, etc.) without correctly citing the source, or because they have engaged in any other irregular conduct. In accordance with the UOC's academic regulations , irregular conduct during assessment, besides leading to a failing mark for the course, may be grounds for disciplinary proceedings and, where appropriate, the corresponding punishment, as established in the UOC's coexistence regulations. In its assessment process, the UOC reserves the right to:
|
||||||||||||||||
|