This course will introduce you to programming tools that are useful for Data Structures (CS 1510), other classes, personal projects, and industry jobs.

Topics we will cover are listed in the class schedule. The material for the last couple of weeks will be determined by student interest. If there is something not on the schedule that you would like to learn, please let me know!

Instructor Information

Course Information

Note: This course was originally designed by Nathan Jarus and further built upon by Islam Elnabarawy. They deserve credit for the excellent work they have done to develop this course. There will be some changes to the course material based on previous student feedback. The material will continue to change as the course progresses based on your feedback. Be sure to email your instructor if you would like to see certain topics covered in this class.

Section 3A

  • Location: V.H. Mcnutt Hall 114
  • Time: Monday, 5-6:50 PM
  • Assistants: Michael Beaver and Reno DuBois

Section 3B

  • Location: Toomey Hall 251
  • Time: Wednesday 4-5:50 PM
  • Assistants: Michael Beaver and Reno DuBois


There are a total of 150 points available in the class. 130 points will be available from homework assignments, and 20 points will be available from two projects. Overall grades will be assigned on a straight scale:

A 135-150
B 120-134
C 105-120
D 90-104
F < 90

That being said, the instructor reserves the right to make any adjustments to the grading scale or individual letter grades as he deems necessary, at any point in time, and without prior notice.


No credit will be given for attendance; however, attending lab is mandatory. In addition, your instructor and lab helpers will be available for the duration of the lab to help you and answer your questions. ∴ you should probably come to class.

If you miss attending the lab, you need to communicate with your instructor well ahead of lab time. It is up to the instructor to decide whether an absence is excused. Missing lab without permission may result in an alert sent to your advisor through the academic alert system. Missing 2 or more labs without a valid excuse may result in you being dropped from the course.


14 homeworks will be assigned (the first week is free). Each homework will be worth 10 points. Your lowest homework score will be dropped.


Two 10 point projects will be assigned. One will be due about halfway through the semester and one will be due at the end of the semester. The purpose of these projects is to encourage you to study some topics in class in additional depth. I will give you a list of topics you can choose to do a project on, or you may choose a topic of your own with my approval. To encourage you to experiment on your own, these projects will be fairly open-ended, but I will do my best to be clear about what I expect from you for them.

Tentative Topic Schedule

  1. Introduction, Text Editors
  2. Shell Commands and Configuration
  3. Version Control
  4. Shell Scripting
  5. Regular Expressions
  6. … TBD

Possible topics:

  • Using an IDE for C++
  • Build Systems
  • Debugging
  • Profiling
  • Code Linting
  • Unit Testing
  • C++ Tricks
  • Creating GTK Applications
  • Boost Library
  • Doxygen
  • LaTeX
  • Functional C++ features
  • Scripting with Ruby XOR Python
  • strace/ltrace
  • objdump and friends
  • Software licensing/open source software



Lab will be held in a computer lab classroom, so you do not need to bring your own computer. However, you may choose to bring along your own machine if you want. I recommend that you consult the posted slides before each class to ensure that the tools we will be using are already installed and configured. Keep in mind that the lab instructor and assistants are not there to help you with problems specific to your machine.

Your code must function on the lab machines. “…but it works on my [laptop|desktop|ipad]” will not fly.

Please do not use your phone or computer for things unrelated to class while class is in session out of respect for your fellow classmates and the instructor. Distraction is contagious.


Students must be enrolled in or have already taken CS 1510 (Data Structures).


I prefer if you contact me via email. I will send announcements concerning the course via email; you should check your email at least once a day during the school week for these announcements.

Course materials, homework and project assignments, and resources will be posted to the course website.

Academic Dishonesty

I take academic dishonesty very seriously, especially in a laboratory class setting where students are expected to gain hands-on experience with the course material. You are encouraged to ask other students questions, but all classwork must be your own. Page 21 of the Student Academic Regulations Handbook describes the standard of conduct for students and gives examples of academic dishonesty. For a first offense, you will receive a score of zero on the assignment and your final grade will be reduced by one letter grade. A second offense will result in you receiving a grade of F in the class. All instances of academic dishonesty will be reported to your advisor and university administration per the university’s policies.

Questions and Concerns

Do not hesitate to ask me questions or discuss concerns you have with the course, the assistants, or me. If I do not properly address my concerns or you do not feel comfortable discussing your concern with me, you should speak with my supervisor, Dr. A. Ricardo Morales. If neither of us resolve your issue, you should contact the CS Department Chair, Dr. Sajal Das.

Classroom Egress Maps

Familiarize yourself with classroom and building exits. Classroom egress maps are posted on-line at:\ http://designconstruction.mst.edu/floorplan/.

Disability Support Services

If you have a documented disability and anticipate needing accommodations in this course, you are strongly encouraged to meet with me early in the semester. You will need to request that the Disability Support Services staff send a letter to me verifying your disability and specifying the accommodation you will need. Disability Support Services is located in 204 Norwood Hall. Their phone number is 341-4211 and their email is dss@mst.edu.

Title IX

Missouri University of Science and Technology is committed to the safety and well-being of all members of its community. US Federal Law Title IX states that no member of the university community shall, on the basis of sex, be excluded from participation in, or be denied benefits of, or be subjected to discrimination under any education program or activity. Furthermore, in accordance with Title IX guidelines from the US Office of Civil Rights, Missouri S&T requires that all faculty and staff members report, to the Missouri S&T Title IX Coordinator, any notice of sexual harassment, abuse, and/or violence (including personal relational abuse, relational/domestic violence, and stalking) disclosed through communication including but not limited to direct conversation, email, social media, classroom papers and homework exercises.Missouri S&T’s Title IX Coordinator is Vice Chancellor Shenethia Manuel. Contact her directly (manuels@mst.edu; (573) 341-4920; 113 Centennial Hall) to report Title IX violations. To learn more about Title IX resources and reporting options (confidential and non-confidential) available to Missouri S&T students, staff, and faculty, please visit http://titleix.mst.edu.

Modifications to this syllabus can be seen on the History of Syllabus page of this website.