ABDULLAH GUL UNIVERSITY DEPARTMENT OF COMPUTER ENGINEERING CENG101 ART OF COMPUTING Course Description This course is far more than just learning to program. It focuses on some of the "Big Ideas" of computing, such as recursion, abstraction, and design. During this course students will learn beautiful applications of computing that have changed the world and where it will go in the future. The course will introduce the fundamental concepts and techniques of computing using a graphical programming language SNAP and the application-oriented programming language Java. Course Objectives The course aims to teach the essentials of computing to students who have little or no background in programming. The students will learn how to write basic computer programs using SNAP and Java. . The students who finish this course will be able to Define fundamental concepts of computing Describe variables, assignment statements, data types, type conversions, conditionals, loops, and arrays Describe elements of modular programming and design issues for functions and methods Develop graphical programs with SNAP Develop computer programs with Java Demonstrate the ability to solve a computing problem by applying the concepts learned in class Design a simple computer game Learning Outcomes Textbooks Other References Meeting Times SNAP Reference Manual, Brian Harvey and Jens Mönig http://snap.berkeley.edu/SnapManual.pdf Java How to Program (early objects), Paul Deitel and Harvey Deitel, 9th Edition, Prentice Hall, 2011. CS10 Beauty and Joy of Computing https://inst.eecs.berkeley.edu/~cs10/fa14/ Introduction to Programming in Java, MIT OpenCourseWare http://ocw.mit.edu/courses/electrical-engineering-and-computerscience/6-092-introduction-to-programming-in-java-january-iap2010/index.htm Eclipse and Java for Total Beginners http://eclipsetutorial.sourceforge.net/totalbeginnerlessons.html Introduction to Programming in Java: An Interdisciplinary Approach, Robert Sedgewick and Kevin Wayne, Addison Wesley, 2007 http://introcs.cs.princeton.edu/java/home/ Think Java, How to Think Like a Computer Scientist, Allen B. Downey http://www.greenteapress.com/thinkapjava/thinkapjava.pdf Lecture Hours: Laboratory Hours: Recitation Hours: Evaluation Criteria Quizzes Labs Homework Project Midterm 1 Midterm 2 Final 5% 15% 10% 20% 15% 15% 20% Attendance Policy You should attend at least 80% of the lectures and labs. Otherwise you will not to be able to take the final exam will automatically fail the course. Classwork Quizzes The quizzes will occur during the first hour of the week. They will cover reading materials that are made available during the class. Labs Each week you will work on a self-paced lab exercise. At the end of each lab session you must show your work to the TA and get checked-off. For SNAP assignments we will follow the material from https://inst.eecs.berkeley.edu/~cs10/labs/course/berkeley_bjc.html? Java labs will be announced later during the course. Homework Homework assignments can be more involved than the labs. You can discuss the homework with other students but your final solution should be developed alone. Project You will work on a SNAP or Java project together with one partner or alone. Projects mainly include developing a computer program that solves a given problem. There can be many project topics such as designing a computer game or programming a robot. Midterms The first midterm will cover SNAP related material and the second midterm will mainly focus on concepts learned about Java. The exams will require you to write a program on lab computers and solve problems on a paper. Final Exam The final exam will cover everything learned during the class. Similar to the midterms, it will include a programming portion and a written portion. Lectures The first hour of the lectures will be allocated to quizzes and powerpoint presentations. In the second and third hours, we will apply the concepts learned during class by doing programming exercises. Weekly Schedule Week 1: Introduction to SNAP Lab 1: Kaleidoscope Week 2: Abstraction, Repeating Commands, Making Your Own Blocks Lab 2: Draw a Flower, Using Randomness Week 3: Conditionals, Practice with Predicates Lab 3: Number Guessing Week 4: Functions, Innovation and Abstraction, The Max Block, Input Types, Testing Your Code Lab 4: Programs With Multiple Stripes, The GO Team Week 5: Lists, Programming Paradigms Lab 5: Hangman, Tic-Tac-Toe Week 6: Algorithms, Algorithmic Complexity, Timing Experiments Lab 6: Trash or Treasure, Improving Number Finder, Evil Hangman Week 7: Introduction to Computers Lab 7: Finch Robot Lab Week 8: Introduction to Classes, Objects, and Methods Lab 8: Introduction to Java Applications and Elementary Programming Week 9: Control Statements: Selections Lab 9: Dialog Boxes Week 10: Control Statements: Repetitions Lab 10: Making Simple Drawings Week 11: Control Statements: Formulating Algorithms Lab 11: Colors and Filled Shapes Week 12: Methods and Modules Lab 12: Graphics Week 13: Methods and Java API Packages Lab 13: Simulation in Science, Climate Change, Global Warming Week 14: Arrays Lab 14: Simulation in Bioinformatics Instructor Assist. Prof. Zafer Aydın Phone: Email: zafer.aydin@agu.edu.tr Office: Office hours: Assistants Ahmet Özdil Phone: Email: ahmet.ozdil@agu.edu.tr Office: Serkan Seven Phone: Email: serkan.seven@agu.edu.tr Office: Oğuzhan Ayyıldız Phone: Email: oguzhan.ayyildiz@agu.edu.tr Office: Academic Cheating is strictly prohibited and is not allowed in quizzes, homework Honesty assignments, labs, midterms and final exam. You and your project partner(s) are allowed to return a single project report. You will automatically get a zero grade as a penalty for cheating and for a second offense you will be dismissed from the university.