Professional C++ ITP 499 (3 Units) Spring 2013

Similar documents
Video Game Programming ITP 380 (4 Units)

Interactive Web Development ITP 301 (4 Units)

Introduction to Cloud Technologies ITP 111x (2 Units)

Mobile Application Development ITP 342 (3 Units)

Database Web Development ITP 300 (3 Units)

Mobile Application Development ITP 342 (3 Units)

Introduction to Information Technology ITP 101x (4 Units)

Mobile Application Technologies ITP 140 (2 Units)

Fundamentals of Computer Programming CS 101 (3 Units)

English 230: Shakespeare and His Time

Introduction to Java Programming ITP 109 (2 Units) Fall 2015

Introduction to Programming System Design. CSCI 455x (4 Units)

Mobile Application Development ITP 342 (3 Units)

Mobile App Design ITP 340x (3 Units)

Mobile App Project ITP 442x (4 Units)

ITP 300: Database Web Development. Database Web Development (Monday section) Fall 2012 Course Units

CSCI-599 DATA MINING AND STATISTICAL INFERENCE

ECON 351: Microeconomics for Business

Technologies and Processes for Building Web Startups ITP 499 (4 Units)

SAMPLE ONLY. COMM 304 Interpersonal Communication Spring 2015 Tu/Th 11:00 12:20 ANN L101

IML 400 Creative Coding for the Web

The objectives of the course are to provide students with a solid foundation in all aspects of internet marketing. Specifically my goals are:

DESIGN FOR USER EXPERIENCE (ITP 310)

BUAD 310 Applied Business Statistics. Syllabus Fall 2013

MARSHALL SCHOOL OF BUSINESS University of Southern California. FBE 555: Investment Analysis and Portfolio Management

Syllabus for PM538 Introduction of Biomedical Informatics and the Applications

Advanced Digital Forensics ITP 475 (4 Units)


GESM 160 Seminar in Quantitative Reasoning Wireless Computing Technologies for Medicine with Legal and Ethical Implications.

Sociology 314: Analyzing Social Statistics Spring 2014 Class Meetings: Tues. & Thurs. 12:30-1:50 PM Classroom: KAP 305

IOM431:Foundations of Digital Business Innovation

ISE 515: Engineering Project Management

Building the High Tech Startup ITP 499x (4 Units)

Introduction to Computer Forensics ITP 499 (3 Units)

Security and Computer Forensics ITP 477 (4 Units)

UNIVERSITY OF SOUTHERN CALIFORNIA Marshall School of Business BUAD 425 Data Analysis for Decision Making (Fall 2013) Syllabus

Tentative: Subject to Change CHEM 205Lxg Chemical Forensics: the Science, and its Impact. Course Overview:

ISE 515: Engineering Project Management (31505)

Data Warehouses and Business Intelligence ITP 487 (3 Units) Fall Objective

How To Teach C++ Data Structure Programming

3D Modeling, Animation, and Special Effects ITP 215x (2 Units)

Benjamin, L. and Baker, D. (2004) From Séance to Science: A History of the Profession of Psychology in America. Belmont, CA: Thomson Wadsworth

CS A250 (CRN ) C++ Programming Language 2. Syllabus Fall 2015

Geza Bottlik ISE310L Facilities and Logistics Fall /09/13 Instructor:

PTE505: Inverse Modeling for Subsurface Flow Data Integration (3 Units)

The objectives of the course are to provide students with a solid foundation in all aspects of internet marketing. Specifically my goals are:

Business Ethics (BUS 105) Cycle II, Spring, 2012 Semester

Syllabus: IST451. Division of Business and Engineering. Penn State Altoona

MAT 117: College Algebra Fall 2013 Course Syllabus

ISE 544: Management of Engineering Teams Summer 2014 Mon, Wed 6:00-9:10pm Location: RTH 105 and

Course Syllabus OPRE/MIS Supply Chain Software The University of Texas at Dallas

Technologies for Interactive Marketing ITP499 (4 Units)

Social Games Workshop ITP499 (3 Units) Spring 2010 (2010-1)

CE 473 ENGINEERING LAW, FINANCE AND ETHICS COURSE SYLLABUS FALL 2013

BADM323: Information Systems for Business Professionals SU2016 Online Course

Enterprise Information Systems ITP 320x (4 Units)

Iconic Figures of Popular Music: Pink Floyd Spring 2015

GIT 335 COMPUTER SYSTEMS TECHNOLOGY Course Syllabus Fall 2008 Professor Penny Ann Dolin

Syllabus Introduction to C++ Programming and Numerical Analysis Spring 2016

ITS1100: Train the Trainer

PSY 2012 General Psychology Sections 4041 and 1H85

Web-Based Database Applications ITP 300x (3 Units)

Network Security ITP 457 (4 Units)

CE 460 Course Syllabus

Arch 315: Design of the Luminous and Sonic Environment

1. COURSE DESCRIPTION

The University of Akron Department of Mathematics. 3450: COLLEGE ALGEBRA 4 credits Spring 2015

SYLLABUS MIS 6713: Delivering Business Value through Information Systems Fall 2014

SSCI 582 Spatial Databases, Course Syllabus Summer 2013

Lincoln Land Community College Business and Technologies Division COS Office Professional Syllabus - 3 credit hours

How To Pass Physics 161

Sample Syllabus (C++) CSCI 1301 Introduction to Programming Principles

Macintosh, OSX, & ios Forensics ITP 445 (3 Units)

CE 460 Course Syllabus

This four (4) credit hour. Students will explore tools and techniques used penetrate, exploit and infiltrate data from computers and networks.

AUSTIN COMMUNITY COLLEGE DEPARTMENT OF COMPUTER STUDIES AND ADVANCED TECHNOLOGY

IML 140: Workshop in Multimedia Authoring

ACG (10061) INTERMEDIATE THEORY III (3 credit hours) Tentative Syllabus spring 2012 Class hours: Wednesdays, 7:10 p.m. 10:00 p.m.

Multiplayer Game Programming ITP 484x (4 Units)

HARFORD COMMUNITY COLLEGE 401 Thomas Run Road Bel Air, MD Course Outline

3D Modeling, Animation, Compositing, and Special Effects ITP 215x (2 Units)

Geza Bottlik ISE310L Facilities and Logistics Spring /21/2009 Pre-Requisites: Test Schedule

Management 352: Human Resource Management Spring 2015 Syllabus

MAT 1500: College Algebra for the Social and Management Sciences General Syllabus

MAT Elements of Modern Mathematics Syllabus for Spring 2011 Section 100, TTh 9:30-10:50 AM; Section 200, TTh 8:00-9:20 AM

SSCI 599 Special Topics: Geospatial Data Integration Course Syllabus Spring 2014

Course title: Management Information Systems Fall 2010 Course number: CRN: Location: Meeting day: Meeting time:

Advanced Topics in Real Estate Finance R Thursdays 6:30 9:30, JKP 104

MAR 4232 Retail Management Syllabus Spring 2014 Term

COURSE SYLLABUS INTRODUCTION TO INTERNATIONAL BUSINESS MGT ONLINE FALL 2014

CEC225 COURSE COMPACT

THE JAMES BOND PHENOMENON

UCC1: New Course Transmittal Form

: Foundations of Game Programming

Computer Science CS 2334: Programming structures and abstractions

College Algebra Online Course Syllabus

BCS2B02: OOP Concepts and Data Structures Using C++

Department of Accounting ACC Fundamentals of Financial Accounting Syllabus

Retail Management. Office Hours: Tuesdays and Thursdays 8:30 to 9:30 am; 10:45 am to 12:30 pm; 1:45 pm to 2:45 pm Wednesdays 1 to 3:30 pm

Transcription:

Professional C++ ITP 499 (3 Units) Spring 2013 Objective This course provides students with the advanced knowledge they will need to succeed as a professional C++ developer. By semester s end, students will: 1. Become familiar with advanced C++ language idioms. 2. Gain exposure to common libraries used professionally today. 3. Understand how to write efficient and high-quality C++ code. Concepts Code Generation. Memory layout. Templates. STL. Optimization. Exceptions. RTTI. Design Patterns. Metaprogramming. Lambda Expressions. Boost. Custom Memory Allocators. C++11. Prerequisites CSCI 102L Instructor Sanjay Madhav Contacting the Email: madhav@usc.edu Instructor Office Hours OHE 530H: T/Th @ 2-2:50PM, W @ 3-4:50PM Lab Assistant TBA Lecture/Lab W @ 5-7:50PM in KAP 267 Course Structure The topics covered during lecture will be applied to the five programming assignments spread out through the semester. All programming assignments must be done individually. There are two exams that are comprehensive of all topics covered. Textbooks Required: Effective C++ (Third Edition). Scott Meyers. ISBN-10: 0321334876. Modern C++ Design: Generic Programming and Design Patterns Applied. Andrei Alexandrescu. ISBN-10: 0201704315. Reference: The C++ Programming Language: Special Edition. Bjarne Stroustrup. ISBN-10: 0201700735. Grading The course is graded with the following weights: Lab Assignments (12% each) 60% Midterm Exam 20% Final Exam 20% TOTAL POSSIBLE 100% 1

Grading Scale Letter grades will be assigned according to the following scale: 93%+ A 90-92% A- 87-89% B+ 83-86% B 80-82% B- 77-79% C+ 73-76% C 70-72% C- 69 D+ 67-68 D 66 D- 65 and below F Half percentage points will be rounded up to the next whole percentage. So for instance, 89.5% is an A-, but 89.4% is a B+. There is no curving. Students will receive the grade they earn. Extra credit is generally not offered. Policies Make-up policy for exams: To make up for a missed exam, the student must provide a satisfactory reason (as determined by the instructor) along with proper documentation. Make-up exams are only allowed under extraordinary circumstances. Late Assignments: Late assignments will only be accepted by the same documented extraordinary circumstances policy for make-up exams. Before logging off a computer, students must ensure that they have emailed or saved projects created during the class or lab session. Any work saved to the computer will be erased after restarting the computer. ITP is not responsible for any work lost. ITP offers Open Lab use for all students enrolled in ITP classes. These open labs are held beginning the second week of classes through the last week of classes. Hours are listed at: http://itp.usc.edu/labs/. 2

Academic Integrity USC seeks to maintain an optimal learning environment. General principles of academic honesty include the concept of respect for the intellectual property of others, the expectation that individual work will be submitted unless otherwise allowed by an instructor, and the obligations both to protect one s own academic work from misuse by others as well as to avoid using another s work as one s own. All students are expected to understand and abide by these principles. SCampus, the Student Guidebook, (www.usc.edu/scampus or http://scampus.usc.edu) contains the University Student Conduct Code (see University Governance, Section 11.00), while the recommended sanctions are located in Appendix A. Students with Disabilities Emergency Preparedness Students will be referred to the Office of Student Judicial Affairs and Community Standards for further review, should there be any suspicion of academic dishonesty. The Review process can be found at: http://www.usc.edu/student-affairs/sjacs/. Information on intellectual property at USC is available at: http://usc.edu/academe/acsen/issues/ipr/index.html. Any student requesting academic accommodations based on a disability is required to register with Disability Services and Programs (DSP) each semester. A letter of verification for approved accommodations can be obtained from DSP. Please be sure the letter is delivered to me (or to TA) as early in the semester as possible. DSP is located in STU 301 and is open 8:30 a.m. 5:00 p.m., Monday through Friday. Website and contact information for DSP: http://sait.usc.edu/academicsupport/centerprograms/dsp/home_index.html, (213) 740-0776 (Phone), (213) 740-6948 (TDD only), (213) 740-8216 (FAX) ability@usc.edu. In case of a declared emergency if travel to campus is not feasible, USC executive leadership will announce an electronic way for instructors to teach students in their residence halls or homes using a combination of Blackboard, teleconferencing, and other technologies. Please activate your course in Blackboard with access to the course syllabus. Whether or not you use Blackboard regularly, these preparations will be crucial in an emergency. USC's Blackboard learning management system and support information is available at blackboard.usc.edu. 3

Course Outline Week 1 (1/16) Introduction - Instant quiz and review - Pointers and using them properly - Const and mutable - C++ style casts Reading: Meyers: Introduction; Items 1-4, 20, 27 Lab: Begin work on Lab 1. Week 2 (1/23) Code Generation - Default members and explicit - Stages of compilation and how it affects your code - Macros and constexpr Reading: Meyers: Items 5, 6, 26, 30, 31, 53 Lab: Continue Lab 1. Week 3 (1/30) Advanced Classes - Memory layout of classes - Inheritance (public and private), abstract interfaces, and multiple inheritance Reading: Meyers: Items 7, 9-12, 32-40 Lab 1 DUE 2/5 @ 11:59PM Week 4 (2/6) Templates - Review of templates - Template specializations and non-type templates - SFINAE and conditional compilation Reading: Meyers: Items 41-45 Lab: Begin work on Lab 2. Week 5 (2/13) STL and Lambda Expressions - STL container types (including C++11 additions) - Function Objects and Lambda Expressions Reading: Stroustrup: pp. 461-507 Lab: Continue Lab 2. Week 6 (2/20) STL Algorithms and Move Constructors - <algorithm>: merge, sort, etc. - bitset and stringstream - lvalues, rvalues, and move constructors Reading: Stroustrup: pp. 507-549 Lab 2 DUE 2/26 @ 11:59PM Week 7 (2/27) Error Handling and Run-Time Type Identification - Using exceptions properly and their drawbacks - Other error handling solutions - Run-Time Type Identification (RTTI) - Implementing your own RTTI Reading: Meyers: Item 29, Stroustrup: pp. 355-389 Lab: Begin work on Lab 3. Week 8 (3/6) Midterm Exam Lab: Continue Lab 3. 4

Week 9 (3/13) Boost Library and Shared Pointers - What is boost? - shared_ptr, lexical_cast, program_options, signal, bimap - std::shared_ptr Reading: Meyers: Item 55, boost library documentation Lab 3 DUE 3/26 @ 11:59PM Week 10 (3/27) Design Patterns - Policy Class concept - Singleton (and template implementation) - Factories (Concrete and Abstract) - Proxy, memento, and other notable patterns Reading: Alexandrescu: Chapters 1 and 6 Lab: Begin work on Lab 4. Week 11 (4/3) Template Metaprograms - Metaprogramming - Applications: Static assert, compile-time calculations, conditional checks - Variadic Templates Reading: Meyers: Items 46-49; Alexandrescu: Chapters 2 and 3 Lab: Continue Lab 4. Week 12 (4/10) Boost Metaprogramming - bind - Boost MPL - C++11 tuples and other features Reading: Alexandrescu: Chapter 11 Lab 4 DUE 4/16 @ 11:59PM Week 13 (4/17) Writing Optimized and Secure Code - 80/20 rule and profiling - Optimization techniques - Writing efficient code naturally - Security pitfalls in C++ Reading: Meyers: Items 30 and 31. Lab: Begin work on Lab 5. Week 14 (4/24) Custom Memory Allocators - Overloading new and delete - Memory allocator approaches (pool, stack, boundary allocators) - Placement new - Logging memory usage Reading: Meyers: Items 49-52 Lab: Continue Lab 5. Week 15 (5/1) Final Exam Lab: Continue Lab 5. Week 16 Lab 5 DUE 5/10 @ 11:59PM 5