The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

This course introduces students to the concepts and theories that will help them understand and analyze various aspects of data structure and algorithms. Students will find that the selection of data structures for application programming and implementation of algorithms are critical in developing a skill set for conversion of problem to logic. The course includes key data structures such as stack, queue, linked list and tree combined with searching and sorting algorithms which are commonly used in the industry. Students will also acquire knowledge in graph and other advanced algorithms, including dynamic programming.

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by tylim1, 2021-03-31 09:38:48

TCC236_filp

This course introduces students to the concepts and theories that will help them understand and analyze various aspects of data structure and algorithms. Students will find that the selection of data structures for application programming and implementation of algorithms are critical in developing a skill set for conversion of problem to logic. The course includes key data structures such as stack, queue, linked list and tree combined with searching and sorting algorithms which are commonly used in the industry. Students will also acquire knowledge in graph and other advanced algorithms, including dynamic programming.

Revised on April 12, 2021

Course Overview

0.1 Course Details

i. Course title: Data Structures and Algorithms
ii. Course code: TCC236/05
iii. Credit hours: 5
iv. Learning hours: 200 hours
v. Course type: Elective (BIFS), Core (BITC), Basic (BSEG)
vi. Offer in academic year: September semester
vii. Course coordinator/Lead: Respective appointed lecturer from School of Science and Technology

(SST)
viii. Tutor(s): Respective appointed tutor(s) from SST

1

No. Activities - ODL / ODLi No. of Hours
1 Guided learning (F2F), e.g., 42
108
participate in online guided learning: discussion and presentation,
participate in scheduled online lectures / tutorials, 50
and participate in online practical: hands-on and lab activities (if any) 200
2 Independent learning (Non-F2F), e.g.,
study learning materials - online materials, video clips, podcast,
attempt learning activities - online forum discussion, presentation, case studies,
attempt supplementary assessment: self-tests, quizzes, exercises, practical activities,
and perform online library search for supplementary learning materials
3 Continuous Assessments, e.g.,
online assignments,
online hands-on and laboratory activity (if any),
online laboratory test (if any),
online quiz (if any),
online mid-semester test (if any),
and final examination (if any or alternative assessment)

Total

Table 1: Allocation of Student Learning Time (SLT)

0.2 Course Synopsis

This course introduces students to the concepts and theories that will help them understand and
analyze various aspects of data structure and algorithms. Students will find that the selection of data
structures for application programming and implementation of algorithms are critical in developing a
skill set for conversion of problem to logic. The course includes key data structures such as stack,
queue, linked list and tree combined with searching and sorting algorithms which are commonly
used in the industry. Students will also acquire knowledge in graph and other advanced algorithms,
including dynamic programming.

0.3 Course Learning Outcomes

You should be able to:

i. Discuss the appropriate algorithm, technique or approach that solve a given problem (C3, PLO1).
ii. Analyse algorithm complexity (C4, PLO2).
iii. Apply data structures such as stack, queue, tree, and others in problem solving (P4, PLO3).

2

0.4 Study Schedule

Topic Week ODL and ODLi Guided learning Independent learning
Topic and Focus
1 1 ADT and Java OOP F2F Non-F2F Non-F2F
2 2 Linked list
3 3 Stack
4 4 Queue
5 5 Trees
6 6 Algorithm complexity
7 7 Sort algorithms
8 8 Search algorithms
9 9 Recursive techniques
10 10 Graph algorithms
11 11 Advanced algorithms: greedy algorithms,
divide-and-conquer, dynamic programming

0.5 Assessment Methods

Assessment - ODL Weightage
Online assignment 1 (A1) 100%
Online assignment 2 (A2) 100%
Final examination (if any or alternative assessment)
Total

Assessment - ODLi Weightage
Online assignment 100%
Online hands-on (if any) 100%
Online laboratory test (if any)
Online quizzes (if any)
Online mid-semester test
Final examination (if any or alternative assessment)
Total

0.6 References

i. Hemant Jain (2018). Problem Solving in Data Structures & Algorithms Using Java, Indepen-
dently Published.

ii. James T.T.Streib and Takako Soma (2018). Guide to Data Structures, Springer.

iii. Liang, Y. Daniel (2017), Introduction to Java Programming and Data Structures, Boston: Pearson
Education.

iv. Lafore, R. (2017). Data structures and algorithms in Java. Sams Publishing.

v. WOU Course Team (2017). TCC236/05 Data Structures and Algorithms. Wawasan Open Uni-
versity and Yashwantrao Chavan Maharashtra Open University (YCMOU).

3

0.7 Copyright

Copyright protection in Malaysia is governed by the Malaysia Copyright Act of 1987. Under the Act,
the copyright in a work is infringed when a person who is not the owner of the copyright, and without
consent of the owner of the copyright, makes a reproduction of the whole work or a substantial part
there of either in its original or derivative form for distribution to the public. Under certain conditions
specified in the law, libraries and archives are authorised to furnish a photocopy or other reproduc-
tion. One of these specified conditions is that the photocopy or reproduction is not to be used for
any purpose other than for private study, scholarship or research. The shared materials here work
around this fair use or fair dealing principle. Please take note.

4

Contents

0.1 Course Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
0.2 Course Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
0.3 Course Learning Outcomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
0.4 Study Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.5 Assessment Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.7 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1 Week 0: Welcome notes 6
1.1 Tools for practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.1 Which Java version? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2 Downloading a JDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.3 Integrated Development Environment (IDE) . . . . . . . . . . . . . . . . . . . . 8
1.2 Endnote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5

1 Week 0: Welcome notes

Welcome to TCC236/05 Data Structures and Algorithms. As you become an established programmer
or software developer in the industry, you would be designing and programming more and more
complex applications to solve sophisticated problems. To store the many variables contributing to
these problems, you will be using data structures such as stacks, queues and linked lists and will
be accessing information from them. To make these applications as efficient as possible and to
ensure that they solve the intended problems, you will be designing algorithms or sets of rules for the
program to follow to solve the problems. Some of the most commonly used algorithms are sorting
and searching algorithms which will be used to access the information you have stored in the data
structures. In this course, you will be introduced to many of the data structures and algorithms which
are being widely used in the industry.

You will find this course interesting and challenging as it will develop your logical-thinking and problem-
solving skills besides giving you an understanding of some of the current technologies as mentioned
above. The course material is equipped with many examples and hands-on activities. As you have
already completed TCC128/05 Programming Fundamentals, you will find it easier to implement the
algorithms and data structures introduced in this course.

This course is broadly organized into three main areas, each with reinforcing topics:

Major Areas Topics
Data structures 1, 2, 3, 4, 5
Complexity analysis 6
Algorithms 7, 8, 9, 10, 11

Topics Ref. WOU PDF course material
1 Unit 1.1, 1.2, 1.3
2 Unit 2.1, 2.2, 2.3, 2.4
3 Unit 3.1
4 Unit 3.2
5 Unit 3.3, 5.3
6 Unit 4.1, 4.2
7 Unit 5.1
8 Unit 5.2
9 Unit 4.3
10 Unit Unit 6 (extra)
11 Unit Unit 7 (extra)

Figure 1 summarizes the organization of the course.

6

Figure 1: Plan of the course

1.1 Tools for practice

To improve your understanding about data structures and algorithms, you will need to put a lot of
effort on hands-on programming. Practice makes perfect. As mentioned, this course teaches data
structures and algorithms using Java programming language. Therefore, you should get ready your
Java tool.

1.1.1 Which Java version?

If you google for Java, you would find a plethora of Java versions. Oracle, the current owner of Java
releases a ton of versions of Java. The version number of Java usually gets incremented every six
month. To date, Java 11 is most current version Oracle designates as its long-term support (LTS)
version of Java. The previous LTS version being Java 8. Java 11 came out in September 2018.

Generally, Oracle releases an LTS version every three years. Unlike non-LTS versions that are
supported for only six months, LTS releases have patches and upgrades for at least three years. The
next LTS version is the Java 17. Nonetheless, Java 11 would continue to be supported until 2023 at
a minimum.

Note: In this course, you are recommended to use either the Java 8 or Java 11. It is possible to
use other versions of Java, but take precaution that they are either not supported in newer machines
or because they are not LTS, there would be no patches should there be any issue. The rules and
behaviour can differ from version to version.

7

Remark:

• Recommended Java 8 or Java 11.

1.1.2 Downloading a JDK

Apart from Oracle, many vendors including Amazon, Red Hat and AdoptOpenJDK have their own
JDK versions. In general, it does not really matter who the vendor is, just choose the reputable one
and the correct JDK version. The Oracle’s JDK1 is free for personal use as well as other scenario.
Alternatively, you can use OpenJDK2, which is based on the same source code. To this end, the
Amazon Corretto3 may be a good option since Amazon is running Corretto internally on its many
production services. Another common option is the Red Hat’s implementation of OpenJDK4. Finally,
you could also opt for the AdoptOpenJDK5. All the OpenJDK, irrespective of vendors are usually free
and open source implementation of the Java Platform, Standard Edition (Java SE).

Remark:

• Choose from either Oracle or any OpenJDK vendor.
• Ensure the JDK version is the desired one (see section 1.1.1).
• Download the JDK that matches your operating systems (Windows, Linux, MacOS).

1.1.3 Integrated Development Environment (IDE)

Many programmers use an integrated development environment (IDE) to make writing and run-
ning the code easier. It is always good when learning programming to practise writing code in any
text editor, e.g. Notepad, and compiling and running them using the command line, instead. While
this is true, it is still good to know that IDEs exist, and you are free to use them in this course.
The common Java IDEs are Eclipse6, IntelliJ IDEA7 by Jetbrains, and NetBeans8 by Apache. Each
IDE has its own pros and cons. It is usually a personal taste on the choice of IDE. So feel free to
explore them.

1https://www.oracle.com/java/technologies/javase-downloads.html
2https://openjdk.java.net
3https://aws.amazon.com/corretto/
4https://developers.redhat.com/products/openjdk/download
5https://adoptopenjdk.net
6https://www.eclipse.org/ide/
7https://www.jetbrains.com/idea/
8https://netbeans.apache.org/

8

Remark:
• The IDE and the choice of JDK (see section 1.1.1) should match.
• Usually, you must install the JDK before installing the IDE.
• Download the IDE that matches your operating systems (Windows, Linux, MacOS).

1.2 Endnote

You are now ready to dive into the course.
Remark: Your checklist to get started with the course:
Install Java JDK (see section 1.1.2).
Install Java IDE, if necessary (see section 1.1.3).
Please download the full course material from WOU learning management system.

Happy learning!

9


Click to View FlipBook Version