Academic Year/Semester: 111-1
Course Number: 130021
Instructor: Tzu-Yi Yu
Course Title: Data Structures and Algorithms (1)
Grade: 2 Credits: 3.0
Class location: Room 241, Management Building
Class hours: 3bcd
This course can cultivate the following core competencies in students:
Information technology application and innovation ability (undergraduate program)
According to a report by the Central News Agency on March 30, 2016, the 107 curriculum proposed by the National Academy for Educational Research in our country will be reviewed by the “Curriculum Review Committee” after restructuring by the Ministry of Education. According to the established draft, programming is part of the technology field and is listed as a required course in junior high and high school. It is evident that programming has become a national policy. In the future, programming courses may even extend to elementary education. It is clear that knowing how to program is very important.
Writing code and being able to write good code are two different things. What makes a good program? A good program not only needs to solve problems correctly and provide the correct answers but also needs to balance execution efficiency and effective memory management under the correct conditions. In other words, this is an advanced programming course. After learning the basics of programming and object-oriented programming, the data structures course teaches how to combine algorithm design with data design using object-oriented techniques, which is both a subject and an art of design.
In the field of computer science, the relationships between data are often referred to as data structures. Procedures that solve mathematical problems within a finite number of steps are often defined as algorithms. Specifically, the study of data structures mainly concerns how to organize data in computer memory in a more efficient way to improve program execution efficiency. In addition to teaching commonly used data structures, the goal of the course is to cultivate students’ ability to write efficient programs that solve complex problems with fewer computational steps through program implementation. In this course, we will cultivate students’ ability to analyze problems, design appropriate data structures, and accumulate experience through computer program implementation. This will lead to the enhancement and development of students’ information technology application abilities, innovative thinking skills in project writing, and the improvement and development of their information technology capabilities for future employment.
The main purpose and core competency of this course is to develop students’ skills in applying and innovating with information technology. In order to help students achieve this goal, the course will be implemented as follows:
1.Lecture content will be recorded and uploaded to the course information website (moodle) in the form of videos. The videos will cover theoretical content from the textbook, programming outlines and directions, supplementary materials, and in-class assignments.
2.If there are videos for the week, they will be closed one week after the class, and students are advised to complete their homework before the videos are closed. If there is a legitimate reason for needing additional time to watch the videos, students should contact the instructor or teaching assistant.
3.To foster a culture of discussion, students will be grouped together and assigned fixed seats. Students in the same group will also sit together.
4.During the first class, the instructor will discuss the video content from the previous class with students in their respective groups and on an individual basis, and class participation grades will be based on the accuracy of their answers.
5.In order to develop proficiency in information technology and implement theoretical concepts in practice, students will be required to write programs. Programs will be divided into individual and group assignments. The programming language is not limited, but it should be able to compile and execute correctly.
6.To cultivate proficiency in information technology and implement theoretical concepts, this course requires the writing of programs. Programs are divided into individual and group assignments, and any programming language can be used, but it must compile and run correctly.
7.Students can only use C/C++, Java, or C# programming languages for assignments. If another language is to be used, students must decide and inform the teaching assistant two weeks after the start of the course. The score for programming assignments is not related to the programming language used, but rather to the completion of the assignment requirements.
8.To increase the diversity of computer language learning, this course will use C# programming language as a teaching tool. In other words, C# will be used to demonstrate theoretical concepts and practical exercises, and will also be used to write part of the assignments. Students can complete the entire assignment based on the demo exercises in class and submit them using Visual Studio 2013/2015 as the compilation and execution tool.
9.C# is not a compulsory requirement for this course and is not related to assignment grades. Students can choose their own programming language to submit assignments based on their preferences. However, any form of plagiarism is not tolerated, and any instance of cheating on assignments or exams will be subject to disciplinary action according to school rules.
10.Individual programming assignments are due on the day of the assignment, while group assignments are due one week later. Through continuous writing and discussion, it is hoped that students can improve their ability to apply and innovate in information technology.
Instructor office hours:Location: B24 in the College of Management building. Wednesdays from 14:00 to 16:00.
In addition to regular classroom instruction (slides, textbooks), students are required to preview and discuss in class.
Students will report and operate on specific topics (students taking the course should bring their laptops to class for practical exercises).
Class participation accounts for 5% of the grade. The grade is also based on the following components: Keynote notes (10%), mid-term exam (20%) (written), mid-term exam (15%) (computer-based), in-class computer-based exams (20%) (possibly limited to one hour), and final exam (30%) (a combination of written and computer-based exams or only written).
Course schedule (week, topic, activities, evaluation/assignment, text, etc.):
Week 1: Course introduction, vision, learning objectives and grouping, introduction to learning tools, understanding C# language (Lecture)
Week 2: Analysis of algorithms (Big O), understanding and writing C# language (Lecture)
Week 3: Data structure: application of arrays (part 1) (representation of matrices), Lecture, in-class practice
Week 4: Data structure: application of arrays (part 1) (application of polynomials), Lecture
Week 5: Data structure: application of arrays (part 2) (magic squares), Lecture
Week 6: Data structure: introduction to stack, Quiz (arrays)
Week 7: Data structure: introduction to queue, Lecture
Week 8: Data structure: stack and queue, Lecture, Quiz
Week 9: Midterm exam
Week 10: Data structure: circular queue and multi-stack operations, Lecture & practice
Week 11: Data structure: introduction and practice of singly linked lists, Lecture & practice
Week 12: Data structure: introduction and practice of circular linked lists, Lecture & practice, Quiz
Week 13: Data structure: introduction and practice of doubly linked circular linked lists, Quiz
Week 14: Data structure: introduction and practice of doubly linked circular linked lists, Quiz
Week 15: Data structure: introduction and practice of recursion, direct recursion introduction and practice, Quiz
Week 16: Data structure: introduction and practice of recursion, indirect recursion introduction and practice, sorting
Week 17: Data structure: application of recursion
Week 18: Data structure: final exam (written and/or practical exam)