Vietnam National University of HCMC
International University
School of Computer Science and Engineering
Data Structures and Algorithms
★ Overview ★
https://vichithanh.github.io
Instructor introduction
Vi Chi Thanh
[email protected]
Email: [email protected]
Website: https://vichithanh.github.io
https://vichithanh.github.io
M O N D AY , 1 6 SE P T E M B E R 2 0 2 4 2
Classroom Etiquette
+All laptop computers, cell phones, tablet computers must be closed
during all classroom hours
+If you wish to use a computer, you are welcome to step outside
+Computers distract the most people behind and around the user
+You require a Verification of Illness form to use a computer in class
+The classroom is not for playing games or watching the next football
match – even if your country is playing – but you are welcome to sit
outside
+Last but not least: I have a noise problem!
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 3
What you have learnt…
+ The history of computing / objects / types / console I/O
+ Operators / loops / methods / parameter passing
+ Selection statements / arrays / strings
+ Exceptions / debugging
+ File input / file output
+ Pointers / unsafe code / linked lists
+ Collections / multi-dimensional arrays / search algorithms
+ Sorting algorithms
+ Object-oriented design / polymorphism / interfaces / inheritance
+ Abstract class
What you have learnt…
+ These were the basics of programming
+ The ability to manipulate the computer to perform the required tasks
+ You saw data storage techniques:
+ Arrays, and
+ Linked lists (collections were discussed)
+ You saw array accessing/manipulation techniques:
+ Searching, and
+ Sorting
Algorithms and Data Structures
+ In this course, we will look at:
+ Algorithms for solving problems efficiently
+ Data structures for efficiently storing, accessing, and modifying data
+ We will see that all data structures have trade-offs
+ There is no ultimate data structure...
+ The choice depends on our requirements
M O N D AY , 1 6 SE P T E M B E R 2 0 2 4 6
Week by week topics (*)
1. Overview, DSA, OOP and Java 7. Advanced Sorting
2. Arrays 8. Binary Tree
3. Sorting 9. Hash Table
4. Queue, Stack 10.Graphs
5. List 11.Graphs Adv.
6. Recursion Final-Exam
Mid-Term 10 LABS
M O N D AY , 1 6 SE P T E M B E R 2 0 2 4 7
Classroom Etiquette
+All laptop computers, cell phones, tablet computers must be closed
during all classroom hours
+If you wish to use a computer, you are welcome to step outside
+Computers distract the most people behind and around the user
+You require a Verification of Illness form to use a computer in class
+The classroom is not for playing games or watching the next football
match – even if your country is playing – but you are welcome to sit
outside
+Last but not least: I have a noise problem!
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 8
Java
+ You will be using Java programming language for this course
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 9
Java
+This course does not teach Java programming
+You will use Java to demonstrate your knowledge in this course
+One lecture covers:
+Features of Java and differences with procedural programing languages.
+An on-line tutorial is available online (use Google)
+It assumes minimal knowledge of programming
+Please note: marks in OOP are not strongly correlated with marks in
DSA
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 10
Java
+ Other sources of help in Java are:
+ The Project T.A.s,
+ The lab instructor, and
+ The instructor
+ Laboratories are held every week, starting a few weeks later.
+ Laboratories is associated with a project
+ IDE: You are welcome to use your preferred one.
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 11
Evaluation
The course is divided into numerous topics
+ Storing ordered and sorted objects
+ Storing an arbitrary collection of data
+ Sorting objects
+ Graphs
+ Algorithm Design Techniques
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 12
Evaluation
Your evaluation in this course is based on three components:
+ One mid-term examination (30%)
+ One final examination (40%)
+ Labs (30%)
+ 8 lab assignments (30%)
+ 1 practice examination (35%)
+ 1 course project (35%)
+ In-class contributions (bonus)
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 13
Textbooks
+Class notes
+Lafore, R. (2017). Data Structures and Algorithms in Java. United
Kingdom: Pearson Education.
+Goldwasser, M. H., Goodrich, M. T., Tamassia, R. (2014). Data
Structures and Algorithms in Java. United Kingdom: Wiley.
+Leiserson, C. E., Cormen, T. H., Rivest, R. L., Stein, C. (2009).
Introduction to Algorithms. India: MIT Press.
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 14
Academic Offences
Academic Offences include, but are not limited to:
+Infringing unreasonably on the work of other
members
+E.g., disrupting classes
+Cheating
+Plagiarism
+Misrepresentations
Plagiarism
All projects must be done individually:
+You may not copy code directly from any other source
+Plagiarism detection software will be used on all of the projects
+If you viewed another code (from books or lecture notes), you must
include a reference in your project
+You may not share code with any other students by transmitting
completed functions to your peers
+ This restriction includes - but is not limited to - electronic and hard-copy sharing
+You may discuss projects together and help another student debug his or
her code; however, you cannot dictate or give the exact solution
Plagiarism
+Collaboration with other students must be limited to
+Discussions
+High-level pseudocode
+Assistance with debugging (only through the offering of advice)
+Sharing test files
+All such collaborations must be documented in your source code
Plagiarism
+When one student copies from another student, both students are
responsible
+Exceptions are made for outright theft
+The penalty for plagiarism on a Project is a mark of 0 on the project
in question and a further 5% is subtracted from your final grade
+Regardless if Projects are counted or not
Plagiarism
+One student cannot accept “full responsibility”
+For example, Alex, Bailey, Casey, and Devin worked together in a group
+They each did their own work. However, they shared code to comment on
each others programming
+Bailey gave Alex’s code to Emerson who copied it for his project and
submitted it
+Alex, Bailey and Emerson received a 0 and –5 %
Plagiarism: Example 1
+Alex and Bailey were lab partners
+Bailey left herself logged on to her account to allow Alex to
complete the lab
+Alex copied Bailey’s project
Plagiarism: Example 2
+Leslie asked if Morgan could send her his code so that she could
look at it (promising, of course, not to copy it)
+Morgan sent the code
+Leslie copied it and handed it in
Plagiarism: Example 3
+Erin did not change her default password
+Fanny logged onto Erin’s account and took Erin’s code
+Erin is still responsible
Plagiarism: Example 4
+Garry and Harry worked together on a single source file initially and
then worked separately to finish off the details
+The result was still noticeably similar with finger-print-like
characteristics which left no doubt that some of the code had a
common source
Plagiarism: Example 5
+Jordan uploaded the projects to GITHUB.com without setting
appropriate permissions. Kasey found this site, downloaded the
projects and submitted them. Both are guilty.
+This applies to any public forum, news group, etc., not just github.com…
Plagiarism
+The minimum penalty for plagiarism is 0 on the project and –5% on
your final mark for each case of plagiarism
+The penalty is applied regardless of what proportion the Projects are of your
final grade
+A student who cheats must receive a grade lower than a student who
did not hand in a project
Plagiarism
+The best way to avoid plagiarism is:
+review the Java tutorial
+read the project as soon as it is available
+start the project so that there is sufficient time to contact the T.A. or myself if
you have difficulty
+do not give your code to anyone
Distribution of Information
Information may be pass to the class through one of two media:
An announcement in class,
An announcement on Blackboard
Assessment
+DON’T COPY and DON’T ALLOW ANYONE COPY YOURS
+Zero for all
+Except as otherwise noted, all assignments:
+Are to be done solo (by yourself).
+You may discuss the assignments with other students
+You may help (and get help with) debugging
+You may not give your source code to anyone
+Late assignments within 24 hours will lose 25%. Submission later
than 24 hours will NOT be accepted.
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 28
Projects (group of 2)
(example projects below)
1. Game Minesweeper + Tasks
+ Read and present the game rules
+ With undo feature
+ Design classes
2. Game Lines + Implement the game with basic rules (50pts)
+ With moving path + Write report (10pts) – game rules, class diagrams, …
+ Demonstration (10tps)
3. Game Battleship
+ Mandatory
+ Human vs Computer (with non-random move) + Use Git (10pts) – Commits history
+ Graphical User Interface (10pts)
4. Interactive chart
+ Bonus
+ Zoom in/out
+ Extra features (+2pts for each)
+ Multiple functions + Applying design patterns (+5pts for each)
+ Using C#/ JavaScript (5pts)
MO N D A Y , 1 6 S EP T EM BE R 2 0 24 29
Vietnam National University of HCMC
International University
School of Computer Science and Engineering
THANK YOU
https://vichithanh.github.io