EECE.2160 ECE Application Programming Instructor: Dr. Michael Geiger Fall 2017 Lecture 1: Course overview
ECE Application Programming: Lecture 1 Lecture outline Announcements/notes Program 1 due Monday, 9/11 10 points: e-mail Dr. Geiger for shared Dropbox folder Please specify e-mail address associated with Dropbox account You will receive invitation to join shared folder—must accept invitation 10 points: introduce yourself to your instructor 30 points: complete simple C program Today’s lecture Course overview Instructor information Course materials Course policies Resources Course outline Introduction to C programming Program development cycle 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Course meeting times Lectures: Section 201: MWF 8-8:50, Ball 326 Section 202: MWF 1-1:50, Ball 314 Section 203: MWF 12-12:50, Ball 314 You are welcome to attend either lecture Please go to your assigned section for exams 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Course instructors Dr. Michael Geiger E-mail: Michael_Geiger@uml.edu Phone: 978-934-3618 (x43618 on campus) Office: 301A Ball Hall Office hours: M 9:30-11, W 9:30-11, Th 1:30-3 Student questions are top priority during these hours Will also be in office MW 11-11:45 & 2-3, F 9:30-11:45 Available by appointment other days/times 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Teaching assistants Zhendong Wang (e-mail: Zhendong_Wang@student.uml.edu) Lin Li (e-mail: LiN_Li@student.uml.edu) Office hours TBA—will be based on Doodle poll 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Course materials Textbook: K.N. King, C Programming: A Modern Approach, 2nd edition, 2008, W.W. Norton. ISBN: 978-0-393-97950-3 Course tools: Need integrated development environment (IDE) that compiles/runs C code Recommended IDEs (all free; links on web) Windows: Microsoft Visual Studio Community (MS website) Mac: Xcode (Mac App Store) Linux: gcc/gdb (text-based; can run through terminal on Mac as well) 2/17/2019 ECE Application Programming: Lecture 1
Additional course materials Course websites: http://mjgeiger.github.io/eece2160/f17/index.htm http://mjgeiger.github.io/eece2160/f17/schedule.htm Will contain lecture slides, handouts, assignments Discussion group through piazza.com: Allow common questions to be answered for everyone Do not post code to the discussion group All course announcements will be posted here Will use as class mailing list—please enroll ASAP 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Academic honesty All assignments are to be done individually unless explicitly specified otherwise by the instructor Any copied solutions, whether from another student or an outside source, are subject to penalty You may discuss general topics or help one another with specific errors, but do not share assignment solutions Must acknowledge assistance from classmate in submission 2/17/2019 ECE Application Programming: Lecture 1
Programming assignments Will submit all code via shared Dropbox folder Will not get confirmation unless you explicitly ask Must e-mail Dr. Geiger if submitting late Penalty after due date: -(2n-1) points per day i.e., -1 after 1 day, -2 after 2 days, -4 after 3 days … Assignments that are 8+ days late receive 0 See grading policies (last three pages of today’s handout) for more details on: Grading rubric Common deductions Regrade policy Example grading 2/17/2019 ECE Application Programming: Lecture 1
Programming assignments: regrades You are allowed one penalty-free resubmission per assignment Each regrade after the first: 1 day late penalty Must resubmit by regrade deadline, or late penalties will apply Late penalty still applies if original submission late “Original submission” first file submitted containing significant amount of relevant code In other words, don’t turn in a virtually empty file just to avoid late penalties—it won’t count 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Course “rules” A couple of unofficial rules: Please call me “Dr. Geiger” “Professor Geiger” is okay (although I’m technically not a professor, I’m a lecturer) “Michael,” “Mike,” or “Geiger” is not okay Please don’t talk when I’m talking Doing so distracts your classmates and me If you have a question, please raise your hand and ask—I want questions during lecture! 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Grading and exam dates Grading breakdown Programming assignments: 60% Minimum of Exam 1/Exam 2: 10% Maximum of Exam 1/Exam 2: 15% Exam 3: 15% Exam dates Exam 1: Wednesday, October 4 in class Exam 2: Wednesday, November 8 in class Exam 3: TBD (during finals; likely common for both sections) 2/17/2019 ECE Application Programming: Lecture 1
Tentative course outline Basic C program structure and development Working with data: data types, variables, operators, expressions Basic console input/output Control flow Functions: basic modular programming, argument passing Pointers, arrays, and strings Creating new data types: structures Dynamic memory allocation File & general input/output Bitwise operators 2/17/2019 ECE Application Programming: Lecture 1
Programming exercises Note on course schedule: several days marked as “PE#” Those classes will contain supervised, in-class programming exercises We’ll write/complete short programs to illustrate previously covered concepts If you have a laptop, feel free to bring it 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Course questions General notes/questions about the course: How many of you have prior programming experience? For those that do, can improve programming style, efficiency, potentially learn new items For those that don’t, course assumes no prior programming experience Fair warning for all of you: material builds on itself throughout course Difficulty increases as course goes on If (when) you get stuck, ask for help!!! 2/17/2019 ECE Application Programming: Lecture 1
Course questions (continued) How many of you are taking this course only because it’s required? Follow-up: how many of you hope you’ll never have to program again once you’re done with the course? Both computer and electrical engineers commonly program in industry—some examples: Automation of tasks Circuit simulation Test procedures Programming skills highly sought by employers 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Program development ... which is a good approach for your assignments, too! Average student’s approach to programming Read specification (assignment) ... at least some of it, anyway ... Attempt to write complete program Find output error and fix related code Repeat previous step until either Code completely works ... ... or code is such a mess that problem(s) can’t be fixed 2/17/2019 ECE Application Programming: Lecture 1
Program development (cont.) A more structured approach to program development Read specification Identify requirements What results should program produce? How can I test correctness of those results? Plan design that implements requirements Using flowchart, pseudocode, etc. Plan for tests as well Translate design into actual code Test program and fix errors 2/17/2019 ECE Application Programming: Lecture 1
ECE Application Programming: Lecture 1 Final notes Next time: Basic C program structure Visual Studio demonstration (Time permitting) Data in C Data types Constants Variables Reminders: Sign up for the course discussion group on Piazza! Program 1 due Monday, 9/11 10 points: e-mail Dr. Geiger for shared Dropbox folder Please specify e-mail address associated with Dropbox account You will receive invitation to join shared folder—must accept invitation 10 points: introduce yourself to your instructor 30 points: complete simple C program 2/17/2019 ECE Application Programming: Lecture 1