ece 551d introduction to programming data structures and
play

ECE 551D Introduction to Programming, Data Structures, and - PowerPoint PPT Presentation

ECE 551D Introduction to Programming, Data Structures, and Algorithms in C++ Introduction ECE 551 (Hilton/Lipp): Introduction 1 Course Overview Programming Ability Now Programming Ability In December ECE 551 (Hilton/Lipp):


  1. ECE 551D 
 Introduction to Programming, Data Structures, and Algorithms in C++ Introduction ECE 551 (Hilton/Lipp): Introduction � 1

  2. Course Overview Programming Ability Now Programming Ability In December ECE 551 (Hilton/Lipp): Introduction � 2

  3. Admin • Professor: Andrew (“Drew”) Hilton • E-mail: adhilton@ee.duke.edu • Office Hours: Hudson 211, Thursdays 1:30–3:00 pm • Or by appointment (e-mail me, we’ll setup a time) • Co-Instructor: Genevieve Lipp • E-mail: genevieve.lipp@duke.edu • Office Hours: Hudson 058, Fridays 10:30 am–12:00 pm • TAs (OH to be posted on Piazza): • Lidea Shahidi • Ye Tao • Naixin Yu • Runren Zhang • Zike Qin • Hugo Zhang • Arda Icmez • Ouhan You • Xinyu “Joe” Zhou • Yiwei “Eevee” Li • Yi Luo • Yichuan “Ethan” Shi • Wenyan Yao ECE 551 (Hilton/Lipp): Introduction � 3

  4. A bit about us ECE 551 (Hilton/Lipp): Introduction � 4

  5. A bit about us • Please, feel free to call me “Drew” • Actually, I strongly prefer that to “Professor Hilton” • Please, feel free to call me “Genevieve” • Who knows what Drew’s job is? • To teach you to be industry-ready programmers • Everything else I do is secondary to that -> Research, reviewing papers, advising undergrads, sleeping… • Who knows what Genevieve’s job is? • MEMS/ECE • Undergraduate dynamics and controls and… you all • If you ask, one of us will help you • Office hours: for you • OH not enough? Set up 1:1 meeting • Chronically struggling? We can have a weekly 1:1 meeting ECE 551 (Hilton/Lipp): Introduction � 5

  6. Learning your names • We’d like to learn your names... • There are ~150 of you, so it takes a while • Please help us learn your names: • Feel free to remind us of it • Don’t hesitate to correct our pronunciation of your name until we get it right ECE 551 (Hilton/Lipp): Introduction � 6

  7. Topic Overview Linux Emacs valgrind Professional Tools make git gcc Reading Code Algorithms -> Code Strings Programming Pointers (in C) Arrays Big O Recursion Dynamic Allocation Templates Classes References C++ Dynamic Inheritance Polymorphism Dispatch Stacks Queues Linked Lists BSTs ADTs Data Structures Maps Sets Graphs Hash Tables Heaps Priority Queues Sorting Object Layout Concurrency Other Topics Multiple/Virtual Inheritance ECE 551 (Hilton/Lipp): Introduction � 7

  8. Professional Tools • Why Emacs, Linux,… • "I want to use…" • NO(*): you need to be ready for professional world! • Former students report VERY IMPORTANT to know • In interviews -> conveys message of “serious programmer” • I know many ACE programmers. All of them use Emacs or vim • On the job -> it’s what they use (*) vim is acceptable, but we won't help you with it ECE 551 (Hilton/Lipp): Introduction � 8

  9. From a Former Student I was really mad at command line at first. But when I begin to look for jobs, these are the tools currently used by real companies. ... .These skills learnt on your course open lots of doors for me. Plus the programming experience and problem solving skills, getting an offer becomes fairly easy. ECE 551 (Hilton/Lipp): Introduction � 9

  10. Programming: MUCH TO LEARN • Not going to lie: you have a lot of hard work to do • Don't think this will be easy. • Become competent in a thing? 10,000 hours of work • Get cracking! • How could you hope to succeed? • Carefully designed pedagogy: teach you strong fundamentals • Requires SIGNIFICANT hard work on your part! • We’d suggest about 20 hours/week • Read and understand • Work on assignments, master concepts ECE 551 (Hilton/Lipp): Introduction � 10

  11. 20 Hours per Week??? For Monday Read Chapter [first time] (1 hour) (~8.5 hours) Re-read Chapter Deeply Wed: Repeat (2 hours) (~8.5 hours) Work Practice Problems ??? ??? (~2 hours) Fri Recitation Attempt Reading Quiz ??? (30 minutes) 75 min ??? Class-time: Do Problems ??? (75 minutes) ??? Catch up if behind on problems ??? (??? minutes) Lets say 105 min ??? ECE 551 (Hilton/Lipp): Introduction � 11

  12. All of Programming • Textbook: All of Programming • Hilton and Bracy, 2015 • Edition 0 • http://aop.cs.cornell.edu/ • Reading schedule on course webpage ECE 551 (Hilton/Lipp): Introduction � 12

  13. Read the Book, No Really • Flipped Classroom • No lectures • Read your book! • Anne and Drew already wrote down everything you need to know… • Programming activities in class • Help available: don't stay stuck! • Book: custom crafted for this course! • Everything you need to know • Nothing you don't. • Can you understand it all first time through? • Maybe not, but… • Try to understand as much as you can • Work back through later if you want deeper mastery… ECE 551 (Hilton/Lipp): Introduction � 13

  14. Reading, Taking Notes • Keep notebook • Can use on exams • Everything must be handwritten by you • Suggestions • Reading notes • Work on each classwork problem • Library reference • Tool reference ECE 551 (Hilton/Lipp): Introduction � 14 Image from staples.com

  15. Read, Ask, Re-read, Understand • Read your book • No seriously • I know, you don't for a lot of classes… • But there is NO lecture in this class • You can't just magically learn to program! • But, it’s so much work! • Yeah, we told you this wasn't going to be easy… ECE 551 (Hilton/Lipp): Introduction � 15

  16. Flipped Class, Mastery Learning Read Next ??? Reading Quiz ??? Problem Chapter ??? Basics of Material? ??? Fail? Repeat ??? ??? Problem ??? ??? Problem ??? ??? Problem ECE 551 (Hilton/Lipp): Introduction � 16

  17. Formative Assignments • Most assignments: "formative" • For learning! • Repeat until passed! • Can be resubmitted/regraded as much as you want (*) • Collaboration? • Whatever it takes for you to learn • Ask friends for help? Fine, but be sure you learn • Grading/re-grading • Run "grade" to grade assignment • After git commit/push • Tokens: limit rate of regrading • Periodic refresh • Cost increases when past due date ECE 551 (Hilton/Lipp): Introduction � 17

  18. Formative Assignments: Timeliness Grade Multiplier 1 97.3% 91.7% Timeliness Factor 0.75 76.9% Value Axis 0.5 50% 23.1% 0.25 8.3% 0 0 24 48 72 96 120 144 Hours Late Category Axis Grade = %correct * 1/(1+e 0.05*(Hours_Late - 96) ) ECE 551 (Hilton/Lipp): Introduction � 18

  19. Evaluative Assignments • Evaluative Assignments • Show me what you know! • Think of these as out of class programming exams • Must work on by yourself! No help from classmates • Limited outside resources: your notebook, and AoP • Graded ONCE after strict deadline • Four of these: • Assignment 29: 9/14 to 9/21 • Assignment 43: 9/24 to 10/01 • Assignment 60: 10/10 to 10/17 • Miniproject: 11/12 to 12/05 • Depend on previous formative assignments • Must pass prior assignments to get the assignment ECE 551 (Hilton/Lipp): Introduction � 19

  20. Academic Integrity • Academic Integrity Expectations • We take academic integrity VERY seriously, and you should too • Students have been expelled from Duke for cheating • Fall 2015: multiple students expelled for cheating in 551 • More important than your grade: what you learn • Interviews? Jobs? • Think you are "helping your friend out"? • Will you be able to do their interview for them? • What happens if someone gets A, is clueless in interview? • Will you (or others) be able to get interviews? • Ethics: very important! • Industry, as well as academia • Drew has about a decade of experience in software forensics… ECE 551 (Hilton/Lipp): Introduction � 20

  21. Academic Integrity • Question? • Ask one of us • Afraid to ask (maybe they’ll say no…): probably bad • Someone else cheats? • Please report it • Evaluative assignments: • Sign honor statement before receiving assignment ECE 551 (Hilton/Lipp): Introduction � 21

  22. Some questions • What makes a good programmer? • What makes a great programmer? • Where does a good programmer spend most of her time? • Where does a great programmer spend most of her time? • What skill/knowledge would you most like from 551? ECE 551 (Hilton/Lipp): Introduction � 22

  23. What Makes a Terrible Programmer • What Makes A Terrible Programmer? • Copy/paste code from Stack Overflow • No understanding of what it does • "Frankencoding" • Other bad things: • Writes a bunch of stuff with no plan • Debug by randomly changing stuff… ECE 551 (Hilton/Lipp): Introduction � 23

  24. What Makes a Good Programmer • Good Programmer • Careful planning before coding • Deep understanding of what code does • Semantics of language (Ch 2) • Debugging by scientific method • Careful testing of code • Incremental development • Write small piece • Test carefully • Build on it ECE 551 (Hilton/Lipp): Introduction � 24

Recommend


More recommend