Professor: Dr. Thomas R. Ioerger
email: | ioerger@cs.tamu.edu |
Office: | 322C Bright Bldg. |
office hours: | Thurs, 10:30-11:30 |
Teaching Assistant: Siru Li
email address: | li1994@tamu.edu |
office location: | 501C HRBB |
office hours: | 11:00-12:00 MWF |
Peer Teachers:
Meeting: MWF, 8:00-10:00, ZACH 598 (lecture and lab combined)
Course Web Page: https://people.engr.tamu.edu/ioerger/cs121h-fall19/index.html (this page)
Course Description (from TAMU course catalog): Computation to enhance problem solving abilities; computational thinking; understanding how people communicate with computers, how computing affects society; design and implementation of algorithms; data types, program control, iteration, functions, classes, and exceptions; understanding abstraction, modularity, code reuse, debugging, maintenance, and other aspects of software development; development and execution of programs.
Prerequisites: Prior programming course (high school or college, any programming language).
Textbook: ZyBooks: CSCE 121: Introduction to Program Design & Concepts C++
Piazza: This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email team@piazza.com. Find our class page at: https://piazza.com/tamu/fall2019/csce121h/home
See bit.ly/linuxhomedoc for instructions on how to create your computer account on compute.cse.tamu.edu, which we will be using for compiling your programs.
Course Objectives: After completing this class, students will know how to:
The work for this course will primarily focus on a series of programming assignments.
There will be one mid-term exam and a final exam.
The overall score for the course will be a weighted combination of these components, which is tentatively set as follows:
The penalty for late assignments is -5% per day (pro-rated
over 24 hours).
After 10 days late, the deductions cease; the maximum
loss of points is 50%. As long as you
turn an assignment in by the end of the semester, it could still be
worth as much as half-credit. This is to encourage you to eventually complete
the assignment, even if you can't get it in on time initially.
assignment | topic | concepts | activities in-class | ||
---|---|---|---|---|---|
Mon, Aug 26 | (first day of class) | Introduction | |||
Wed, Aug 28 | compilers vs interpreters; editing, compiling, makefiles; C vs C++ | hello.cpp | |||
Fri, Aug 30 | Basic Data Types | int, ASCII chars, IEEE floats, char*, bool | examples.cpp | ||
Mon, Sep 2 | expressions | operator precedence, casting/coercion | showbits.cpp - print out int as bitstring | ||
Wed, Sep 4 | Basic I/O | printf, cout, getting input from user (gets, cin, getline), processing command-line args | area.c, area2.cpp - read length and width interactively (user input) or from cmdline args; print product | ||
Fri, Sep 6 | string functions | C vs C++ | stringtest1.c, stringtest2.cpp - implement interactive loop: get line from user, print it, print length, print capitalized, and search for 'i' or "is" (print position if found) | ||
Mon, Sep 9 | Branches and Loops | while, if, for, switch | |||
Wed, Sep 11 | File I/O | ifstream | mean.cpp - of vals in a file; mygrep.cpp - print lines of file containing pattern; wordcount.cpp - report num of chars, words, and lines in a file, like 'wc' | ||
Fri, Sep 13 | source-code control | git | |||
Mon, Sep 16 | Functions | gcd.cpp - calculate GCD of 2 ints from cmd line; quadratic.cpp - calculate roots of quadratic eqn given 3 coefficients input by user | |||
Wed, Sep 18 | Recursion | fact.cpp, fib.cpp, gcd_rec.cpp | |||
Fri, Sep 20 | Project 1 due | compiling multiple source files and headers | interger_functions.cpp, integer_functions.hpp | ||
Mon, Sep 23 | Arrays | array.cpp, geometry.cpp | |||
Wed, Sep 25 | Pointers | pointers.cpp | |||
Fri, Sep 27 | Project 2 due | ||||
Mon, Sep 30 | Structs; time functions | time_t, struct tm | iris.cpp - read in iris.data, store in vector of structs; print count of each species and mean of each attribute | ||
Wed, Oct 2 | rand() | Mersenne Twister, Linear Congruential Generators | pi.cpp - calc pi via a Monte Carlo method randomize.cpp - read in lines from a file and print out in random order | ||
Fri, Oct 4 | Project 3 due | ||||
Mon, Oct 7 | stringstreams | mysplit.cpp | |||
Wed, Oct 9 | Project 4 due | genomics | genomics.cpp | ||
Fri, Oct 11 | sorting | sortdata.cpp (wx.dat); degrees-that-pay-back.csv - use your split(line,',') function; skip first 2 rows; make a vector of structs; try sorting by starting salary, mid-career, percent-change, and 90th percentile | |||
Mon, Oct 14 | Project 5 due | Factoring and Primes | factor.cpp | ||
Wed, Oct 16 | Software Engineering | coding style, computational thinking, UML, debugging, tools like gdb, testing | |||
Fri, Oct 18 | Project 6 due texas-cities.dat map of Tx cities | Dynamic Programming | fibDP.cpp - put a wrapper around the recursive version of fib() that uses an array to make calculating fib(100) faster; use long long int | ||
Mon, Oct 21 | mid-term exam | ||||
Wed, Oct 23 | Classes | complex.cpp | |||
Fri, Oct 25 | |||||
Mon, Oct 28 | myvec.cpp - write your own class to emulate vectors (of ints) | ||||
Wed, Oct 30 | Inheritance | shapes.cpp | |||
Fri, Nov 1 | Project 7 due | download Employee code from ZyBooks Sec. 10.6. Write a makefile to get it to compile. Extend it by adding a subclass for EmployeeExecutive with member title (e.g. CEO...), and declare Steve Jobs (CEO of Apple, salary $1) as an instance. | |||
Mon, Nov 4 | Templates | ||||
Wed, Nov 6 | pairs, tuples | scores.cpp - practice with pairs and tuples | |||
Fri, Nov 8 | Project 8 due | ||||
Mon, Nov 11 | Iterators | iterators.cpp - see Activity on slides | |||
Wed, Nov 13 | survey of STL Containers | lists, vectors, arrays, sets, unordered_maps | iters.cpp - practice with inserting and erasing in STL lists | ||
Fri, Nov 15 | Project 9 due Aristotle_Ethics.zip Emerson_Essays.zip | ||||
Mon, Nov 18 | re-visiting Makefiles, and Const | ||||
Wed, Nov 20 | a look at a real C++ library: TinyXML | readxml.cpp, books.xml, products.xml | |||
Fri, Nov 22 | Exceptions | ||||
Mon, Nov 25 |
Project 10 due traffic_5_100_0.2.txt traffic_5_100_0.5.txt traffic_10_100_0.5.txt traffic_10_100_0.9.txt output_5f_1c.txt output_5f_2c.txt | implementing Lists and Trees in C++ | expr.cpp (see slides) | ||
Wed, Nov 27 | Reading Day | (class cancelled) | |||
Fri, Nov 29 | Thanksgiving | (class cancelled) | |||
Mon, Dec 2 | review | ||||
Wed, Dec 4 | (last day of class) | Secure Coding | |||
Fri, Dec 6 | final exam, 10:00-12:00 | ||||