資訊工程學系(Department of Computer Science and Information Engineering)
課程名稱(英文)
Program Design (I)
課程代碼
4101031_01
授課教師:
程芙茵
學分數
3
必/選修
必修
開課年級
undergraduate
先修科目或先備能力:
1. Access to a Computer – Students must have a personal computer capable of installing and running the necessary programming environment. The course will involve hands-on coding exercises, assignments, and projects that require software installation and development work outside of class.
2. Basic English Proficiency – This course is conducted as an English as a Medium of Instruction (EMI) course, meaning all lectures, slides, assignments, and discussions will be in English. Students should have a sufficient level of English comprehension to understand the course materials and participate effectively.
課程概述:
This is an introductory course on how to program in C. The scope of this course ranges from the fundamentals of C to Strings. The rest of the topics of C will be covered in the Program Design (II). C is a procedural computer programming language and has hugely influenced many programming languages, such as C++, Java, and C#, which are all widely used nowadays. Hence, understanding the fundamental concepts of C and knowing how to use C in a program is beneficial for learning most of the new programming languages in the future.
*** [Important!!! Must Do!!!] Please read this Google Doc for complete information about this course: https://tinyurl.com/26whylmc ***
學習目標:
1. Understanding C Syntax and Core Programming Concepts
2. Developing Computational Thinking and Problem-Solving Skills
3. Building Practical Programming Proficiency
教科書:
C Programming: A Modern Approach, K. N. King, 2nd edition, 2008, W. W. Norton & Company. Please respect intellectual property rights; do not illegally photocopy textbooks (請尊重智慧財產權,不得非法影印教師指定之教科書籍;)
1.1.具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
1.2.具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
1.3.在資訊工程的許多領域中,具有至少某一項專業能力,例如:硬體、軟體、多媒體、系統、網路、理論等(Professional in at least one area, including hardware, software, multimedia, system, networking, and theory.)
2.1.具有資訊工程實作技術及使用計算機輔助工具的能力(Capability to perform computer science implementations and use computer-aided tools.)
2.2.具有設計資訊系統、元件或製程的能力(Capability to design computer systems, components, or processes.)
2.3.具有科技寫作與簡報的能力。(Capability to write and present technical materials.)
3.1.具有除了已有的應用領域之外,亦可以將自己的專業知識應用於新的領域或跨多重領域,進行研發或創新的能力。(Capability to apply one’s professional knowledge to a new application domain or across multiple different application domains.)
3.2.具有領導或參與一個團隊完成一項專案任務的能力並且具有溝通、協調與團隊合作的能力。(Capability to lead or participate in group projects, with effective communication, coordination, and teamwork.)
3.3.具有因應資訊科技快速變遷之能力,培養自我持續學習之能力。(Capability to adapt to rapidly changing computer science technology and to develop self-learning capabilities.)
4.1.具有社會責任、人文素養及奉獻精神。(The awareness of social responsibilities, humanity, and contribution.)
4.2.具有工程倫理、宏觀能力、國際觀及前瞻視野。(The awareness of engineering ethics, broad capabilities, and global and contemporary vision.)
5. 教學相關配合事項: You need to have your own laptop or desktop computer capable of installing an IDE.
課程目標與教育核心能力相關性
請勾選:1.11.21.32.12.22.33.13.23.34.14.2
1.1
具有資訊工程相關基礎知識之吸收與了解的能力(Capability to grasp foundational knowledge in computer science.)
為何有關:
The introductory course on programming in C contributes directly to the development of competence in computer science and engineering. By learning C, students acquire problem-solving skills critical for understanding advanced programming concepts. The focus on loops, functions, pointers, and arrays provides the necessary foundation for complex computer systems and applications.
達成指標:
Students will develop a solid understanding of fundamental computer science concepts through structured programming in C. They will demonstrate their ability to comprehend key programming principles, such as control structures, functions, pointers, and memory management, which are essential for further studies in algorithms, data structures, and system programming. By completing assignments and projects, students will showcase their proficiency in writing efficient, well-structured programs that reflect their grasp of computational logic. Additionally, their ability to debug and optimize code will indicate their understanding of how computers execute instructions at a low level. Success in exams will further validate their theoretical comprehension of programming concepts, reinforcing their readiness for advanced computer science topics.
評量工具(可複選):
Assignment, Midterm Exam, Final Exam, Final Project
1.2
具有運用資訊工程理論及應用知識,分析與解決相關問題的能力(Capability to use computer science theory and application knowledge to analyze and solve related problems.)
為何有關:
This course in programming with C fosters creativity and problem-solving skills by challenging students to design and develop programs that address various computational problems. Through assignments and the final project, students are encouraged to think critically about how to approach real-world problems using the fundamental concepts of C. Additionally, the course encourages students to explore independent research in finding efficient solutions or improving the performance of their programs. This fosters both technical creativity and analytical thinking.
達成指標:
Students' creativity and problem-solving abilities can be assessed through the final project, where they are given the freedom to design and implement a unique solution to a problem of their choice. Their ability to perform independent research can be evaluated by how effectively they apply external resources, such as Libraries, Advanced C features
Optimization techniques. These resources can help improve their project.
評量工具(可複選):
Assignment, Final Exam, Final project
1.3
在資訊工程的許多領域中,具有至少某一項專業能力,例如:硬體、軟體、多媒體、系統、網路、理論等(Professional in at least one area, including hardware, software, multimedia, system, networking, and theory.)
為何有關:
This course offers a fundamental introduction to programming using the C language, a widely used language in various fields of computer science and engineering. The knowledge and skills gained from this course are crucial for developing expertise in several areas, including Software Development, Systems, and Networking, as well as Hardware and Embedded Systems. By mastering C, students establish a strong technical foundation that can be applied across multiple domains within computer science and engineering.
達成指標:
Students will demonstrate proficiency in several key areas. First, they will master core programming concepts such as loops, functions, and pointers, and apply computational thinking to design and implement solutions in the C programming language. Next, they will develop and complete a functional program as part of their final project. Finally, they will demonstrate their ability to identify and efficiently resolve programming errors.
評量工具(可複選):
Assignment, Midterm Exam, Final Exam, Final project
2.1
具有資訊工程實作技術及使用計算機輔助工具的能力(Capability to perform computer science implementations and use computer-aided tools.)
為何有關:
This course develops students' ability to plan and execute projects by guiding them through the process of designing and developing C programs to solve specific problems. Students will learn how to systematically plan a programming project and turn their ideas into functional, executable code. They are expected to demonstrate project planning skills, including time management, requirements analysis, program structure design, debugging, and testing, ultimately delivering a fully functional program.
達成指標:
Students will be evaluated through a final project that requires them to demonstrate effective planning and execution from project conception to final delivery. The grading criteria include the completeness of the project, the accuracy and efficiency of the program, adherence to time management, and the student's ability to clearly explain their planning and execution process in a project report, ensuring the successful achievement of project goals.
評量工具(可複選):
Assignment, Final Exam, Final Project
3.1
具有除了已有的應用領域之外,亦可以將自己的專業知識應用於新的領域或跨多重領域,進行研發或創新的能力。(Capability to apply one’s professional knowledge to a new application domain or across multiple different application domains.)
為何有關:
This course provides students with fundamental programming skills in C, which serve as a building block for applying computational thinking and problem-solving to various domains. The ability to write efficient and structured programs enables students to explore and contribute to interdisciplinary applications.
By learning C programming, students acquire transferable computational skills that empower them to innovate and integrate technology across various fields.
達成指標:
Students will be evaluated on their ability to apply C programming knowledge to solve real-world problems across various disciplines. We will also assess their development of final projects that integrate C programming into diverse applications. Additionally, we will explore advanced C programming concepts, libraries, and frameworks that enable applications in fields beyond traditional software development. By meeting these criteria, students will be equipped with the computational thinking and practical programming skills necessary to extend their expertise beyond conventional computer science applications.
評量工具(可複選):
Assignment, Final Exam, Final project
3.3
具有因應資訊科技快速變遷之能力,培養自我持續學習之能力。(Capability to adapt to rapidly changing computer science technology and to develop self-learning capabilities.)
為何有關:
This course helps students recognize the importance of independent and life-long learning by introducing foundational concepts in C programming. These concepts serve as a stepping stone to mastering more advanced programming languages and technologies. By encouraging students to explore beyond the course material, the course fosters an attitude of continuous learning and adaptability in the fast-evolving field of computer science.
達成指標:
Students will be evaluated through assignments and the final project, where they must demonstrate the ability to research and apply concepts not covered in lectures. Their willingness to learn independently will also be assessed through the integration of external resources, new techniques, or advanced programming features in their solutions, showing their commitment to ongoing learning beyond the classroom.