Programming and Algorithms
- Sciences
- 200 level
- 3 credit units
- 138 pages
- 21 units
This course introduces the methods and concepts of programming and the role of algorithms in programming. It covers programming concepts such as basic data types, algorithms, performance analysis, fundamental data structures, P, NP and NP-Complete Problems and some sorting algorithms. The course aims to equip students with the basic knowledge of writing efficient programs through the use of concise and efficient algorithms.
About this course
- Difficulty
- Intermediate
- Study hours
- 150 hours
- Maths
- Intermediate
- Content
- Theoretical, practical, problem solving
- Practical work
- Yes
- Basic computer literacy
- Fundamental mathematics
- Assignments
- Tutor marked assignments
- Final examination
What you'll read
The real module and unit structure of CIT237, taken from the course material NOUN publishes.
What you should be able to do
- Define an algorithm and its characteristics
- Explain the program development life cycle
- Discuss the concept of order of growth
- Develop algorithms to perform basic sorting
- Evaluate the performance of sorting algorithms
What it prepares you for
- Software Developer
- Data Analyst
- Systems Analyst
- Database Administrator
- Computer Programmer
- Software Development
- Data Science
- Information Technology
- Financial Services
- Healthcare
- C
- C++
- Java
Where it gets hard
The units students slow down on, and what makes each one heavy.
- Module 2: Performance Analysis of Algorithms
Unit 4: P, NP and NP-Complete Problems
The unit requires a solid understanding of mathematical concepts and notations, including limits, asymptotic notations, and algorithm analysis techniques.
- Module 3: Sorting and Some Special Problems
Unit 3: Quick Sort
Understanding the underlying logic and implementation details of the quicksort algorithm can be challenging due to its recursive nature and partitioning process.
A suggested way through it
13 weeks, about 91 hours in total. Yours will differ.
- Week 1Module 1: Introduction to Programming and Algorithms
Unit 1: Introduction to Programming · 4 hours
Read the introduction to programming.. Understand the different levels of programming languages.. Outline the conventional features of programming languages..
Unit 2: Programming Concepts · 3 hours
Explain program development cycle.. Outline the principles of a good programming style.. Understand the program execution stages..
- Week 2Module 1: Introduction to Programming and Algorithms
Unit 3: Algorithms · 4 hours
Explain what an algorithm is.. Differentiate between computational problems and algorithms.. Outline the characteristics of an algorithm..
Unit 4: Basic Data Types · 3 hours
Outline the data types, which include numeric and non-numeric data types.. Outline the constituents of an integer, real-numbers, character data type and string data type..
- Week 3Module 1: Introduction to Programming and Algorithms
Unit 5: Fundamental Data Structure · 4 hours
Explain data structures and give related examples.. Outline the different types of data structures.. Explain the different types of linear data structures..
Unit 6: Practical Exercise I · 3 hours
Develop a working algorithm and a corresponding flowchart for the algorithm..
- Week 4Module 1: Introduction to Programming and Algorithms
Unit 7: Fundamental Data Structures · 4 hours
Explain the operations of the different types of data structures.. Differentiate between trees and graphs..
Unit 8: Exercise I · 3 hours
Develop an algorithm and a flow chart for the algorithm..
- Week 5Module 2: Performance Analysis of Algorithms
Unit 1: Performance Analysis Framework · 7 hours
State the criteria for estimating the running time of an algorithm.. List the efficiency attributes of an algorithm.. Describe how time efficiency of an algorithm is measured..
- Week 6Module 2: Performance Analysis of Algorithms
Unit 2: Order of Growth · 7 hours
Explain order of growth.. Explain the different asymptotic notations..
- Week 7Module 2: Performance Analysis of Algorithms
Unit 3: Worst-case, Best-case and Average-case Efficiencies · 7 hours
Explain the three methods that are used to measure the efficiencies of algorithms.. Explain how to identify basic operations within an algorithm..
- Week 8Module 2: Performance Analysis of Algorithms
Unit 4: P, NP and NP-Complete Problems · 7 hours
Distinguish between a polynomial and non-polynomial problem.. Understand some basic issues in algorithm time efficiencies.. Understand P, NP, NP –complete problems..
- Week 9Module 2: Performance Analysis of Algorithms
Unit 5: Practical Exercise II · 7 hours
Practice estimating the non time growth of an algorithm..
- Week 10Module 3: Sorting and Some Special Problems
Unit 1: Introduction to Sorting and Divide-and-Conquer Algorithm · 7 hours
Explain the meaning and significance of sorting.. Explain the meaning and practical understanding of divide and conquer algorithms..
- Week 11Module 3: Sorting and Some Special Problems
Unit 2: Merge Sort · 4 hours
Give the practical meaning of merge sort.. Present the merge sort algorithm.. State the performances of the merger sort algorithm..
Unit 3: Quick Sort · 3 hours
Evaluate the procedures involved in a quick sort algorithm.. Transverse array using the quick sort algorithm..
- Week 12Module 3: Sorting and Some Special Problems
Unit 4: Binary Search · 7 hours
Explain how the binary search operates.. Explain how the binary search is used to traverse an array of elements.. Explain the algorithm of the binary search..
- Week 13Module 3: Sorting and Some Special Problems
Unit 5: Selection Sort · 4 hours
Describe how selection sort operates.. Explain how selection sort is used to transverse elements in an array.. Describe an algorithm of the selection sort..
Unit 6: Bubble Sort · 3 hours
Explain how bubble sort operates.. Explain how bubble sort is used to transverse array of homogenous elements.. Describe the algorithm of bubble sort..
Preparing for the exam
- Review all tutor-marked assignments and their solutions to understand key concepts and problem-solving techniques.
- Create concept maps linking different sorting algorithms (Merge Sort, Quick Sort, Bubble Sort) and their time complexities.
- Practice writing pseudo-code for common algorithms like binary search and quicksort without referring to the course material.
- Focus on understanding the differences between P, NP, and NP-complete problems and their implications for algorithm design.
- Allocate time to practice coding the algorithms discussed in the course, focusing on efficiency and correctness.
- Study the examples provided in the course material and try to solve similar problems on your own.
- Create a study schedule that allocates sufficient time for each module and unit, and stick to it.
- Join online forums or study groups to discuss challenging concepts and problem-solving strategies with other students.
Questions students ask about this course
What is CIT237 about?
This course introduces the methods and concepts of programming and the role of algorithms in programming. It covers programming concepts such as basic data types, algorithms, performance analysis, fundamental data structures, P, NP and NP-Complete Problems and some sorting algorithms. The course aims to equip students with the basic knowledge of writing efficient programs through the use of concise and efficient algorithms.
How many units does CIT237 have?
CIT237, Programming and Algorithms, has 21 units across 3 modules, over 138 pages of course material. You can read it one unit at a time.
How many credit units is CIT237?
CIT237 carries 3 credit units, at 200 level in Sciences.
Is CIT237 hard?
CIT237 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 CIT237 take to study?
About 150 hours of study, spread across its 21 units.
How is CIT237 assessed?
CIT237 is assessed by assignments, tutor marked assignments and final examination.
What do I need before starting CIT237?
Basic computer literacy Fundamental mathematics
What can I do with CIT237?
Software Developer, Data Analyst, Systems Analyst, Database Administrator and Computer Programmer.