1 Academic Year AY 2020-21 Semester 1 Course Coordinator Wesley Tan Chee Wah (Dr) and Wonkeun Chang (Asst Prof) Course Code IE1005 Course Title From Computational Thinking to Programming Pre-requisites Nil No of AUs 3 Contact Hours Lecture (Online l ecture 2 h ours and face - to - face lecture 24 hours, total 26 hours); Tutorial cum laboratory (24 hours) Proposal Date January, 2020, updated on 23 March 2022 Course Aims Computational thinking (CT) is a problem solving process with the aid of computer; i.e. translating a problem into a solution in a manner that a computer can effectively solve. It includes a number of characteristics, such as breaking a problem into small and repetitive ordered steps, logically ordering and analyzing data and creating solutions that can be effectively implemented as algorithms running on computer. As such, computational thinking is essential in problem solving across all disciplines, including mathematics, science, engineering, business, finance and humanities. The aim of this course is hence to take students with no prior experience of thinking in a computational manner to a point where they can formulate and code computer programs to solve some basic problems in engineering. This course not only aims to inculcate a Computational Thinking mindset, but also teaches computer programming concepts so that you can build computer programs to further practice and apply your computational thinking skills at the end of the course. This will lay foundation for future programming tasks required of you, be it in building a web or mobile application, or even customizing a microprocessor for monitoring and control purposes. Intended Learning Outcomes (ILO) Upon the successful completion of this course, you shall be able to: 1. Discuss the relationship among components in a computer system, namely hardware, operating system and application software, and computing trends. 2. Explain the programming concepts taught in this course. 3. Write basic computer programs based on the programming language taught in the course. 4. Apply the concepts learnt on case studies/problem-based scenarios (i.e. translating Computation Thinking to actual Computer Programs). Course Con tents Topics Lectures (Hours) Practice Class (2-hr session) 2 0 Course Overview and Concepts of Computational Thinking Solving complex problem using computer - enables the student to work out exactly what to tell the computer to do. 0.5 (Online) - 1 Overview of Programming Languages Graphic programming, high level programming languages (Python, C, Java, R, Matlab) 0.5 (Online) 2 Computers and Programming Introduction to Computer hardware and software, programming, algorithms and pseudocodes. 2 IDE for C (1 week) 3 Overview of a Computer Program and Data Types A C-program will be dissected, and the various components, concepts and techniques will be introduced. The different data types that can be used will be explored. 4 Practice on Topic 3 (2 weeks) 4 CT to Programming concept – Operations and Reusable Functions The different operators and the reusable standard library functions provided by the computing environment will be discussed. They can be used for computations and calculations. 2 Practice on Topic 4 (1 week) 5 CT to Programming concept – Decision Making and Repetition The following CT scenarios to be converted to programs will be discussed: a. If a condition is satisfied, execute Action A. Otherwise, execute Action B (make use of Decision Making structure) b. As long as a condition is satisfied, repeat an Action (make use of Repetition structure) 5 Practice on Topic 5 (2 weeks) 6 CT to Programming concept – Functions and Decomposition to Smaller Modules The creation of a customized function will be explored. This will allow a large problem to be broken down to many smaller and reusable modules. 6 Practice on Topic 6 (3 weeks) 7 CT to Programming concept – Advanced Data Structures Advanced data structures such as arrays and pointers will be taught. These structures allow for efficient storage and retrieval of data. 5 Practice on Topic 7 (3 weeks) 8 Computing Trends Cloud, Edge and Fog computing, Quantum Computers 0.5 (Online) - 3 9 Social-Ethical Issues and Ramifications of Computing Fairness, Privacy, Sharing, Hacking, software Piracy, Data Protection, Cyberbullying and trolling, Fake news, digital divides, IP/Copyright 0.5 (Online) Total Hours 26 24 Assessment (includes both continual and summative assessment) Component Course LO Tested Related Programme LO or Graduate Attributes Weighting Team/ Individual Assessment rubrics 1. Class Participation 1,2,3,4 a, b, c, e, l 10% Individual 2. Practical Exercise Assessment 1 and 2 2,3,4 a, b, c, e, l 20% Individual 3. Practical Test 1 and 2 2,3,4 a, b, c, e, l 40% Individual 4. Quiz 2,3,4 a, b, c, l 30% Individual Total 100% Mapping of Course SLOs to EAB Graduate Attributes C ourse Student Learning Outcomes Cat EAB’s 12 Graduate Attributes* (a) (b) (c) (d) (e) (f) (g) (h) (i) (j) (k) (l) I E1005 From Computational Thinking to Programming Core ◐ ◐ ◐ ◐ 1. Discuss the relationship among compo nents in a computer system, namely hardware, operating system and application software, and computing trends. EAB SLO* a, e, l 2. Explain the programming concepts taught in this course. EAB SLO* a, b, c, e, l 3. Write basic computer programs based on the programming language taught in the course. EAB SLO* a, b, c, e, l 4. Apply the concepts learnt on case studies/problem-based scenarios (i.e. translating Computation Thinking to actual Computer Programs). EAB SLO* a, b, c, e, l Legend: Fully consistent (contributes to more than 75% of Student Learning Outcomes) ◐ Partially consistent (contributes to about 50% of Student Learning Outcomes) 4 Weakly consistent (contributes to about 25% of Student Learning Outcomes) Blank Not related to Student Learning Outcomes Formative feedback You will be able to receive feedback through: 1. Tutorial questions and Laboratory exercises discussed in class, where you can find out how well you are progressing each week. 2. The suggested solutions revealed for Practical Exercise Assessments and Practical Tests, where you will find out your practical capability and understanding when you progress from one topic to another. Learning and Teaching approach Approach How does this approach support students in achieving the learning outcomes? LECTURE Topics will be delivered as a series of face-to-face lectures and a few online lectures, and you will also be provided with lecture notes for reference and self- study to achieve all the learning outcomes. TUTORIAL cum LABORATORY In each Tutorial cum Laboratory lesson, you will first have a tutorial session so as to understand the programming concepts taught in this course (thus achieving LO2). Next, you will have a laboratory session, where you have a chance to write basic computer programs based on the programming language taught in the course (thus achieving LO3). At the same time, you will learn more about the computer system (thus achieving LO1) and applying concepts learnt to solve specific problems (thus achieving LO4). Reading and References TEXTBOOKS 1. H. H. Cheng, C for Engineers and Scientists: An Interpretive Approach, McGraw-Hill, 2010 (ISBN- 10: 0073376051, ISBN-13: 978-0073376059) REFERENCES 1. P. J. Deitel and H. M. Deitel, C: How to Program, 8th Edition, Prentice-Hall, 2016 (ISBN-10: 0133976890, ISBN-13: 9780133976892) 2. D. M. Etter, Engineering Problem Solving with C, 4th Edition, Prentice-Hall, 2013 (ISBN-10: 0273768204, ISBN-13: 9780273768203) 3. Dey, Pradip. and Ghosh, Manas., Computer Fundamentals and Programming in C, 2nd Edition, Oxford University Press, 2013 (ISBN-10: 0198084560, ISBN-13: 9780198084563) Course Policies and Student Responsibilities 5 General: You are expected to attend all face-to-face lectures and tutorial cum laboratory lessons, complete all online activities and take all scheduled assessments and tests by the due dates. Students are expected to take responsibility to follow up with course notes, assessments and course related announcements. You are expected to participate in all tutorial discussions and laboratory activities. Continual assessments and laboratories: You are required to attend all tutorial cum laboratory lessons and attempt all continual assessments. Absenteeism: Continual assessments make up a significant portion of your course grade. Absence from continual assessments without officially approved leave will result in no marks and affect your overall course grade. Academic Integrity Good academic work depends on honesty and ethical behavior. The quality of your work as a student relies on adhering to the principles of academic integrity and to the NTU Honor Code, a set of values shared by the whole university community. Truth, Trust and Justice are at the core of NTU’s shared values. As a student, it is important that you recognize your responsibilities in understanding and applying the principles of academic integrity in all the work you do at NTU. Not knowing what is involved in maintaining academic integrity does not excuse academic dishonesty. You need to actively equip yourself with strategies to avoid all forms of academic dishonesty, including plagiarism, academic fraud, collusion and cheating. If you are uncertain of the definitions of any of these terms, you should go to the academic integrity website for more information. Consult your instructor(s) if you need any clarification about the requirements of academic integrity in the course. Course Instructors Instructor Office Location Phone Email Assoc. Prof. Teo Hang Tong Edwin S2-B2b-67 67906371 htteo@ntu.edu.sg Dr. Wesley Tan Chee Wah S1-B1b-54 67906009 wesleytan@ntu.edu.sg Asst. Prof. Wonkeun Chang S2-B2b-51 67904843 wonkeun.chang@ntu.edu.sg Planned Weekly Schedule Week Topic Course LO Readings/ Activities 1 Computational Thinking Concepts, Programming languages, Computers and Programming 1,4 Watch online Lecture (1 hour) Attend face-to-face Lecture (2 hours) 2 Overview of a Computer Program 2,3,4 Attend face - to - face Lect ure (2 hours) Tutorial 1 / Lab 1: Familiarization with IDE for C (2 hours) 3 Fundamental Data Types 2,3,4 Attend face - to - face Lecture (2 hours) Tutorial / Lab 2 (2 hours) 4 Operators for Pr ogramming / Standard Library Functions 2,3,4 Attend face - to - face Lecture (2 hours) Tutorial / Lab 3 (2 hours) 5 Decision Making Structures 2,3,4 Attend face - to - face Lecture (2 hours) Tutorial / Lab 4 (2 hours) 6 6 Repetition Structures 1 2,3,4 Attend face - to - face Lecture ( 2 hours) Tutorial / Lab 5 (2 hours) 7 Repetitio n Structures 2 Customized Functions 2,3,4 Attend face - to - face Lecture (2 hour s ) Tutorial / Lab 6 (2 hours) 8 Function concept – Scope and Lifetime 2,3,4 Attend face - to - face Lecture (2 hours ) Tutorial / Lab 7 (2 hours) 9 Modular Programming 1 2,3,4 Atten d face - to - face Lecture (2 hours) Tutorial / Lab 8 (2 hours) 10 Modular Progra mming 2 Pointers 1 2,3,4 Attend face - to - face Lecture (2 hours) Tutorial / Lab 9 (2 hours) 11 Pointers 2 Arrays 1 2,3,4 Attend face - to - face Lecture (2 hours) Tutorial / Lab 10 (2 hours) 12 Arrays 2 2,3,4 Attend face - to - face Lecture (2 hours) Tutorial / Lab 11 Part 1 (2 hours) 13 Computing trends and Ethical considerations 1 Watch online Lecture (1 hour) Tutorial / Lab 11 Part 2 (2 hours)