Lecture | MWF: 11:00 - 11:50 AM (ENGR 304 / Online) |
Laboratory | W: 3:00 - 4:50 PM (ENGR 312) |
Lecturer |
Joseph Picone, Professor Office: ENGR 718 Office Hours: (MWF) 08:00 AM - 10:00 AM, other times by appointment Phone: 215-204-4841 (desk); 708-848-2846 (cell - preferred) Email: joseph.picone@temple.edu Zoom: joseph.picone@temple.edu or joseph.picone@gmail.com |
Teaching Assistant |
Md. Abdullah Al Mamun, PhD Student Office: ENGR 707 Office Hours: (T) 9:00 AM - 11:50AM, (R) 1:15 PM - 2:30PM (online via Zoom) Phone: 267-836-5538 (Zoom, email or text preferred in that order) Email: abdullah18@temple.edu |
Peer Mentor(s) |
Shahzad Khan, BS CpE Student Office: ENGR 702 Office Hours: (T) 1:00 PM - 3:00 PM Phone: 484-656-8830 (Zoom, email or text preferred in that order) Email: shahzadkhan@temple.edu Javier Schorle, BS CpE Student Office: ENGR 702 Office Hours: (M) 3:15 PM - 4:15 PM, (W) 12:00 PM - 1:00 PM Phone: 484-925-4605 (Zoom, email or text preferred in that order) Email: javier.schorle@temple.edu Salvatore Tanelli, BS CpE Student Office: ENGR 702 Office Hours: (T) 05:00 PM - 07:00 PM Phone: 973-816-8411 (Zoom, email or text preferred in that order) Email: salvatore.tanelli@temple.edu |
Help:
temple_engineering_ece1111_help@googlegroups.com
Communication: temple_engineering_ece1111@googlegroups.com |
|
Website | http://www.isip.piconepress.com/courses/temple/ece_1111 |
Textbook |
There are many textbooks available to learn C programming. However,
the best way to learn is to jump right in. There are several
interactive sites that will let you write, test it, and receive
feedback on what is wrong. Two sites we will make use of in this
course are:
|
Reference Textbooks |
Learning how to use the Internet to problem solve is another very
important skill you will learn in this course. We often describe
this as "learning how to learn." An amazing resource that contains
an answer to just about any computer question you can imagine is:
Stack Overflow:
where you can find answers to almost any programming question.
But you have to learn enough about terminology and computing to
know exactly what to search for. After a few weeks in the course,
such searches will become second nature.
Programming languages change so fast that today everyone learns using Internet resources. Nevertheless, there are times when you want to read a textbook that presents an organized and thoughtful view of a programming language. There are many open source books available to learn C: and C++: However, at some point, if you want to be respected as a C/C++ programmer, you need to have read this book:
B.W. Kernighan and D.M. Ritchie
It is considered one of the most influential programming books
ever written and is the definitive textbook on C
programming. It is especially strong on data types, pointers,
and bit-level programming.
The C Programming Language Prentice-Hall; Second Edition April 1, 1988, 272 pages ISBN: 978-0131103627 URL: The C Programming Language The C++ programming language has been evolving quite a bit recently. It is dangerous to invest in a textbook since they tend to lag changes in the language. Online resources are much better. However, this book is another classic, and presents an integrated view of C and C++. It is an excellent introduction to the C programming language as well as providing a very readable and pragmatic discussion of C++:
S.B. Lippman and J. Lajoie
I used the first edition of this book to learn C and C++ and
found it invaluable. I actually felt I learned C much better
after understanding the C++ programming language.
The C++ Primer Addison-Wesley Professional; Fifth Edition (August 16, 2012) 976 pages ISBN: 978-00321714114 URL: The C++ Primer (Fifth Edition) If you want an introduction into computer science and the basic concepts it encompasses, this is a good place to start: A more contemporary book that provides a nice overview of many relevant topics in computer science that electrical and computer engineers should be familiar with as programmers:
R. Sedgewick and K. Wayne
This book introduces you to the fundamentals of the Linux operating
system:
Computer Science - An Interdisciplinary Approach Addison-Wesley Professional; First Edition (June 25, 2016) 1168 pages ISBN: 978-0134076423 URL: Computer Science - An Interdisciplinary Approach
The O'Reilly Book Series is well known for its excellent presentations on most computer science and software topics. In this course we will make extensive use of the LinkedIn Learning (formerly Lynda.com) tutorials available through the TU Portal. Make sure you log into the TU Portal and select the "LinkedIn Learning" link from your menu on the left to access all of their excellent resources. These two tutorials are particularly useful for this course: Learning Linux Command Line (by S. Simpson) and Learning C (by D. Gookin). Though the bulk of this course will deal with the C and C++ programming languages, we will spend about four weeks introducing you to Python. This is in preparation for a follow-on course in data structures and algorithms that many of you will take. A good place to begin is:
There are many great free books available for learning about many data analysis tools available in most Python distributions: 5 Free Books For Learning Python For Data Science. |
Other Resources |
Internet-based resources play a major role in this course. We will
make extensive use of the Linux operating system, but will only have
time to scratch the surface on this topic. An excellent in-depth
training course can be found here:
Free Linux Online Training:
a wide range of Linux tutorials are available.
LearnPython.org: many excellent interactive tutorials. |
Prerequisites |
Minimum grade of C- in: ENGR 1102 (may be taken concurrently) PHYS 1061 or PHYS 1961 MATH 1041 or MATH 1941 |
|
|
Exam No. 1 | 5% |
Exam No. 2 | 5% |
Exam No. 3 | 5% |
Final Exam | 10% |
Homework Assignments | 20% |
Quizzes | 25% |
Laboratory | 20% |
Laboratory Final | 10% |
TOTAL: | 100% |
|
|
|
|
|
|
Linux: Virtualization, Command Line and Shells and Amazon AWS |
|
|
|
Linux: Command Line Programming |
|
|
|
Linux: Emacs, Text Editing, Program Development and IDEs |
|
|
|
Python: Program Structure - Basic Syntax of a Python Program |
|
|
|
Python: Atomic Types and Built-In Data Structures |
|
|
|
Python: Loops, Conditionals and Text File I/O |
|
|
|
Python: Functions and Linear Algebra Using Numpy |
|
|
|
Python: File I/O and Directory Traversal |
|
|
|
C: Editing, Compiling and Debugging Code in Linux |
|
|
|
C: Basic C Syntax |
|
|
|
Exams: Exam No. 1 - Review |
|
|
|
C: Atomic Types |
|
|
|
Exams: Exam No. 1 - Basic Linux and Python Programming (Lectures 01-11) |
|
|
|
C: Numeric Representations |
|
|
|
C: Arithmetic, Relational and Logical Operators |
|
|
|
C: Function Calls, Scope and Operator Precedence |
|
|
|
C: Bitwise Operators |
|
|
|
C: Arrays and Strings |
|
|
|
C: Pointers |
|
|
|
C: Casting and Type Conversions |
|
|
|
C: Formatted I/O |
|
|
|
C: Binary I/O |
|
|
|
C: Control Flow – For, While, If/Else, Case |
|
|
|
Exams: Exam No. 2 - Review |
|
|
|
C: Functions, Return Values and Recursion |
|
|
|
Exams: Exam No. 2 - C Programming (Lectures 12-24) |
|
|
|
C: Math Functions and Other Libraries |
|
|
|
C: The Structure Declaration |
|
|
|
C: Function Pointers and Macros |
|
|
|
C++/Python: Anatomy of a Class |
|
|
|
C++/Python: Constructors, Destructors, Member Functions and Memory Management |
|
|
|
C/C++/Python: Type Declarations |
|
|
|
C++/Python: Templates (C++ Only) and Inheritance |
|
|
|
C/C++/Python: Linked Lists |
|
|
|
C++/Python: Exception Handling and Multithreading |
|
|
|
Python: Data Structures and Functional Programming |
|
|
|
Review: Exam No. 3 |
|
|
|
C++/Python: Unit Testing |
|
|
|
Exam No. 3: C++ Programming (Lectures 25-37) |
|
|
|
Rust: Emerging Programming Languages |
|
|
|
MS Office: Excel |
|
|
|
Guest Lecture: Shymrde Jean-Paul, Signal Processing Engineer, INC, Inc. |
|
|
|
Final Exam (10:30 AM - 12:30 PM): Python Programming |
|
|
|
|
|
|
Cloud Computing |
|
|
Simple Data Manipulation |
|
|
Driver Programs and Workflows |
|
|
Basic Linear Algebra |
|
|
Formatted I/O and Make Files |
|
|
Basic Math Operations and Numerical Precision |
|
|
Bitwise Operators, Masking and Character String Conversions |
|
|
Array and String Manipulations |
|
|
File I/O |
|
|
Function Calls |
|
|
Lists and Trees in C++ and Python |
|
|
Histograms, Word Counts and Data Structures |
|
|
Python Application Programming |
|
|
Functional Programming in Python |
|
|
|
|
|
Infrastructure |
|
|
Creating Simple Python Programs |
|
|
Basic Command Line Programming and File Manipulations |
|
|
Vector and Matrix Manipulations |
|
|
Basic C Syntax, Atomic Types and Command Line Programming |
|
|
Simple Engineering Mathematics |
|
|
Arrays and Strings |
|
|
Pointers and Arrays |
|
|
File I/O |
|
|
Windowed Grep in C and Python |
|
|
Function Pointers and Macros |
|
|
C++ and Python Classes |
|
|
Binary Data |
|
|
Laboratory Final: Application Programming |