Unformatted text preview:

EE 538 Computing Principles for Electrical Engineers Units 2 Term Day Time Lecture Discussion 2 hours week 1 5 hours week Location TBD EEB 504B Instructor Arash Saifhashemi Office Office Hours TBD Contact Info saifhash usc edu Teaching Assistant Office TBD Office Hours TBD Contact Info 1 16 2020 Course Description This course provides a survey of topics required for advanced computer programming It is targeted to graduate electrical engineering students with some prepatory but perhaps informal background programming experience It teaches knowledge and develops practices required to understand and implement software problem solving The course consists of two main parts 1 foundations of software engineering and 2 algorithms and data structures The course includes the necessary theoretical basis to analyze algorithms data structures and mathematical methods The course presents abstractions of methods and algorithms applicable in most robust computer languages It emphasizes learning through implementing and all assignments and projects include major programming components that develop correct execution over suggestive pseudo code Assignments will extend your understanding by requiring concrete implementations with the C programming language These components place emphasis on modern software engineering methodologies such as source control and testing using the C programming language Learning Objectives A student that successfully completes this course will Understand code to execution including tokenization compiling and linking Apply step wise debugging to identify causes of software defects Utilize modern programming practices such as STL objects and object oriented OO programming including inheritance overloading templates and polymorphism Possess knowledge to identify and explain standard algorithms sort search recursion and data structures tree hash lists Develop skills to analyze novel code for its performance in both time and space complexity Be comfortable deciding between multiple solutions given optimization or cost criteria Apply test driven software design and understand its role in minimizing errors and regression Understand the connection between running software and underlying hardware including basics of threading interrupts memory management caching and device access Prerequisite s None Co Requisite s None Concurrent Enrollment None Recommended Preparation Standard undergraduate ECE education including 1 software proficiency in an object orient language at the junior level or above e g EE455x or EE541 and 2 mathematical proficiency and familiarity with proof structures EE 141L EE 364 MATH 225 or equivalent Technological Proficiency and Hardware Software Required You need access to a full stack for C development You may consider installing a linux virtual machine to ensure maximum interoperability and access to any tools The instructor and teaching assistants will give guidance during the first weeks of class Course Notes Discussion section is not optional The homework assignments are discussed primarily during the discussion section Teaching assistants will cover and demonstrate tools during the discussion Discussion sessions couple with the lecture and may also cover important additional material Required Readings and Supplementary Materials 1 Introductions to Algorithms 3rd edition required Thomas Cormen Charles et al available at the campus store 2 The C Programming Language 4th Edition recommended Bjarne Stroustrup available at the campus store 3 Code Complete A Practical Handbook of Software Construction 2nd Edition recommended Steve McConnell available at the campus store Page 2 Note The texts are secondary to in class lecture material and homework sets Description of Exams All exams are cumulative and test both theoretical and applied aspects of the course Exams include multiple choice and or short answer questions to demonstrate progress toward the learning objectives They may also include free response or open ended questions to demonstrate comprehensive mastery Students are expected to write correct code abstract pseudo code and C You may also be asked to read algorithms and determine expected behavior of novel computer code Exam grading primarily follows correct reasoning but may include deductions for major syntax errors algorithmic inefficiency or poor implementation You may use a single 8 5 x11 reference sheet front and back OK You may not use any additional resources You are expected to bring a non graphing scientific calculator You must show how you arrived at your answers to receive full credit Description and Assessment of Assignments All projects and assignments must be submitted electronically either through source code management e g Github or for auto grading There is no paper copy submission required or allowed Review requirements for each assignment before submission No submission should be headless and should include a README file to describe any methods testing and validation Grading Breakdown Assessment Tool assignments Homework Project Midterm Exam Final Exam of Grade 40 20 20 20 Assignment Submission Policy Grading will be handled by both automatic and manual means Code submissions may be reviewed and applied a series of test cases to determine function Page 3 Course Schedule A Weekly Breakdown Week 1 Week 2 Week 3 Week 4 Week 5 Week 6 Week 7 Week 8 Week 9 Week 10 Topics Daily Activities Intro motivation and goals Methods of proof Induction proof by contradiction Introduction to unit tests and version control Runtime complexity and Big O notation C introduction classes member variables and methods C functions pointers and references C constructor copy constructor and destructor Data structures array stack linked list queue tree C STL string vector set map algorithm Data structures II heap tree Binary search and binary search trees Recusion divide and conquer Sorting algorithms I Sorting algorithms II Lambda functions and functors Midterm Exam Project discussion Introduction to graphs Graph representations Readings Preparation Software environment install Deliverables Assign hw 1 tools setup and sample programs Software and environment setup SCM and tooling Lecture slides 1 Ch 2 3 2 Pt 1 Sec 6 9 12 13 Lecture slides 2 Sec 7 8 15 16 17 Assign hw 2 complexity and proof hw 1 due Assign hw 3 functions and pointers hw 2 due Lecture slides 1 Ch 10 2 Ch 14 18 21 27 Pt 4 Assign hw 4 STL hw 3 due 1 Ch 11 1 Ch 12 1 Ch 6 1 Ch 7 8 Lecture slides 1

View Full Document

USC EE 538 - Syllabus

Download Syllabus
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...

Join to view Syllabus and access 3M+ class-specific study document.

We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Syllabus and access 3M+ class-specific study document.


By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?