Data Structures
- Sciences
- 300 level
- 3 credit units
- 221 pages
- 31 units
This course introduces foundational data structures and algorithm techniques. It covers basic operations on stacks, lists, and queues, along with concepts of trees, hashing, and binary search trees. Students will learn object-oriented programming principles and develop Java programs for simple applications. The course also explores algorithm design techniques like greedy algorithms, divide-and-conquer, and dynamic programming, as well as internal and external sorting methods.
About this course
- Difficulty
- Intermediate
- Study hours
- 45 hours
- Maths
- Intermediate
- Content
- Theoretical, practical, problem solving
- Practical work
- Yes
- Basic programming knowledge
- Assignments
- Tutor marked assessments
- Final examination
What you'll read
The real module and unit structure of CIT341, taken from the course material NOUN publishes.
One paragraph, so you can see how it reads
CIT341 · UNIT 1: FUNDAMENTALS
This unit introduces some basic concepts that the student needs to be familiar with before attempting to develop any software. It describes data type and data structures, explaining the operations that may be performed on them. The unit introduces you to the fundamental notions of data structures, thus guiding you through and facilitating your understanding of the subsequent units.
What you should be able to do
- Describe basic operations on stacks, lists, and queues.
- Explain trees, hashing, and binary search trees.
- Identify object-oriented programming concepts.
- Develop Java programs for simple applications.
- Discuss basic data types: lists, stacks, and queues.
- Describe structures and algorithms for external storage.
- Identify directed and undirected graphs.
- Discuss sorting: internal and external sort.
- Describe the efficiency of algorithms, recursion, and recursive programs.
- Discuss algorithm design techniques.
What it prepares you for
- Software Developer
- Data Analyst
- Algorithm Designer
- Database Administrator
- Systems Analyst
- Software Development
- Data Science
- Database Management
- Operating Systems
- Network Design
- Java Development Kit (JDK)
- Integrated Development Environment (IDE)
Where it gets hard
The units students slow down on, and what makes each one heavy.
- Module 2: Hashing and Trees
Unit 2: Trees
Requires understanding of tree structures and traversal methods, which are fundamental to many advanced data structures and algorithms.
- Module 2: Hashing and Trees
Unit 3: Search Trees
AVL tree implementation involves complex rotations and balancing operations that require a strong grasp of tree properties and pointer manipulation.
A suggested way through it
13 weeks, about 45 hours in total. Yours will differ.
- Week 1Module 1: Foundational Data Structures
Unit 1: Fundamentals · 3 hours
Understand data types, abstract data types, and data structures.. Classify data types and give examples.. Explain the relevance of data structures in programming..
- Week 2Module 1: Foundational Data Structures
Unit 2: Arrays · 3 hours
Describe arrays, their dimensionality, and declaration.. Explain the terms element and array name.. Express a two-dimensional array linearly.. Distinguish between static and dynamic arrays.. Explain the importance of arrays in computer applications..
- Week 3Module 1: Foundational Data Structures
Unit 3: The List Data Structure · 3 hours
Describe a List.. Identify the elements of a List.. Explain the operations and implementations of Lists..
- Week 4Module 1: Foundational Data Structures
Unit 4: The Stack Data Structure · 3 hours
Describe the stack data structure.. Identify two basic modes of implementing a stack.. Outline the applications of stacks in computing.. Explain the two methods of storing a stack..
- Week 5Module 1: Foundational Data Structures
Unit 5: The Queue Data Structure · 3 hours
Describe a queue data structure.. Give at least three applications of queues.. Explain the operations on a queue.. Describe two basic modes of queue storage..
- Week 6Module 2: Hashing and Trees
Unit 1: Hashing · 3 hours
Explain the basic idea of hashing.. Describe hash keys and functions.. Give the basic implementation of hash functions.. Define a hash table.. Explain the applications of hash tables..
- Week 7Module 2: Hashing and Trees
Unit 2: Trees · 3 hours
Give a basic definition of a tree.. Describe binary trees.. Explain tree traversals.. Evaluate arithmetic expressions by means of tree traversals..
- Week 8Module 2: Hashing and Trees
Unit 3: Search Trees · 3 hours
Explain what a search tree is.. Describe a successful search.. Describe an unsuccessful search.. Explain the implementation of AVL search trees..
- Week 9Module 2: Hashing and Trees
Unit 4: Garbage Collection · 3 hours
Describe garbage.. Explain garbage collection.. Describe the mark-and-sweep garbage collection.. Explain the fragmentation problem..
- Week 10Module 2: Hashing and Trees
Unit 5: Memory Allocation · 3 hours
Explain the concept of memory allocation.. Discuss the first fit allocation technique.. Explain the best fit allocation technique.. Describe the buddy system..
- Week 11Module 3: Introduction to Java Programming
Unit 1: Object-Oriented Programming Concepts · 3 hours
Describe an object.. Explain what a class is.. Define an Inheritance.. Explain the term 'object-oriented programming'..
- Week 12Module 3: Introduction to Java Programming
Unit 2: Variables · 3 hours
Define a variable.. Describe types of java programming variables.. Explain the naming conventions of variables..
Unit 3: Operators · 3 hours
Explain the term 'operators'.. Describe simple assignment operators.. Explain arithmetic operators.. Discuss unary operators.. Explain equality and relational operators.. Discuss the conditional operators..
- Week 13Module 3: Introduction to Java Programming
Unit 4: Expressions, Statements and Blocks · 3 hours
Define an expression.. Describe statements, giving typical examples of expression statements.. Discuss the concept of blocks..
Unit 5: Control Flow Statements · 3 hours
Describe control flow statements.. Gain knowledge of the decision-making statements.. Explain the looping statements..
Preparing for the exam
- Create concept maps linking Module 1-2 data structures and operations.
- Practice implementing list, stack, and queue operations in Java (Module 1).
- Review tree traversal algorithms (Unit 2, Module 2) and practice coding them.
- Focus on Java syntax and object-oriented concepts (Modules 3-4).
- Solve practice problems for each algorithm design technique (Module 5).
- Understand sorting algorithm complexities and stability (Module 6).
- Review all TMAs and their solutions.
Questions students ask about this course
What is CIT341 about?
This course introduces foundational data structures and algorithm techniques. It covers basic operations on stacks, lists, and queues, along with concepts of trees, hashing, and binary search trees. Students will learn object-oriented programming principles and develop Java programs for simple applications. The course also explores algorithm design techniques like greedy algorithms, divide-and-conquer, and dynamic programming, as well as internal and external sorting methods.
How many units does CIT341 have?
CIT341, Data Structures, has 31 units across 6 modules, over 221 pages of course material. You can read it one unit at a time.
How many credit units is CIT341?
CIT341 carries 3 credit units, at 300 level in Sciences.
Is CIT341 hard?
CIT341 is rated intermediate level, with intermediate mathematical content. It is mostly theoretical, practical and problem solving work, and it has a practical component.
How long does CIT341 take to study?
About 45 hours of study, spread across its 31 units.
How is CIT341 assessed?
CIT341 is assessed by assignments, tutor marked assessments and final examination.
What do I need before starting CIT341?
Basic programming knowledge
What can I do with CIT341?
Software Developer, Data Analyst, Algorithm Designer, Database Administrator and Systems Analyst.