CSCI 112: Programming With C

Course schedule

Schedule subject to change.

DateLecture Topic (notes linked)Textbook ChapterClasswork DueProgram/Lab DueVideo
Wednesday 1/18Intro & syllabus   link
Friday 1/20Course server; intro Linux and vim; classwork submission setup Classwork 1 link
Monday 1/23Intro to C; more Linux & vim2.1Classwork 2 link
Wednesday 1/25Computer hardware and software; more intro to C1, 2.1-2.6Classwork 3 link1 link2
Friday 1/27More intro to C2.1-2.6Ungraded classwork link
Monday 1/30Git intro; functions3.1-3.5Classwork 4 link (audio only)
Wednesday 2/1More functions; intro Lab 13.1-3.5Classwork 5 link
Friday 2/3Logical operators; if and switch statements4.1-4.8Ungraded classwork; fix Classwork 4 if needed link
Monday 2/6More logical operators; if and switch statements Classwork 6 link
Wednesday 2/8Loops; intro Lab 25.1-5.8Classwork 7 no recording
Friday 2/10Redirection Ungraded classworkLab 1link (audio only)
Monday 2/13Conditional operator; arrays7Classwork 8 link
Wednesday 2/15Arrays7Classwork 9 link
Friday 2/17Arrays; intro Lab 37Ungraded classworkLab 2link
Monday 2/20President’s day — no class    
Wednesday 2/22Review   link
Friday 2/24Quiz 1 (more info) on D2L—no class  Lab 3 
Monday 2/27Searching, sorting arrays7Classwork 10 link
Wednesday 3/1Quiz review; Pointers; file i/o6Classwork 11 link
Friday 3/3Pointers; Lab 4 intro6Ungraded classwork link
Monday 3/6Pointers6Classwork 12 link
Wednesday 3/8C type strings8Classwork 13 link
Friday 3/10C type strings; Program 1 intro8Ungraded classworkLab 4; Survey 1link
Spring breakNo class    
Monday 3/20C type strings8Classwork 14 link
Wednesday 3/22C type strings; structs8; 10Classwork 15 link
Friday 3/24Structs10Ungraded classworkProgram 1link
Monday 3/27Structs; Lab 5 intro10Classwork 16 link
Wednesday 3/29Splitting C programs into multiple files Classwork 17Program 1link
Friday 3/31Makefiles Ungraded classworkLab 5 (bonus) 
Monday 4/3Makefiles; Go over program 1 Classwork 18 link
Wednesday 4/5Command line arguments Classwork 19 link
Friday 4/7University day—no class    
Monday 4/10Review   link
Wednesday 4/12Quiz 2 (more info) on D2L—no class    
Friday 4/14Lucy gone—no class    
Monday 4/17Lucy gone—no class    
Wednesday 4/19Dynamic memory allocation13Classwork 20 link
Friday 4/21Dynamic memory allocation13  link
Monday 4/24Dynamic data structures13Classwork 21 link
Wednesday 4/26Dynamic data structures13Classwork 22 (ungraded) link
Friday 4/28Pointer arithmeticAppendix AUngraded classworkLab 6link
Monday 5/1Bitwise operators and bit maskingAppendix CClasswork 23Lab 7link
Wednesday 5/3Go over Lab 7; dynamic arrays   link
Friday 5/5Review   link
Monday 5/8Final quiz on D2L (more info)—extra office hours 10-noon in CS success center   Program 2—final deadline (no lates)

Catalog description

3 Credits. PREREQUISITE: CSCI 127. Programming knowledge. Introduces imperative programming and the C standard library. Course covers pointers, memory management and structures.

Course Info

This course meets for lectures on Mondays, Wednesdays, and Fridays from 9-9:50am in Reid Hall 108. Lectures will be recorded and available on the day’s lecture page (see schedule above) if you would like to rewatch them. We will use Discord as the primary method of course communication, and all course information will be posted on this website or on the Discord server; D2L will be used only for grading.

Note that this class is for Computer Science and Computer Engineering majors. If you are not one of those majors, you should take CSCI 109 instead of this course.

Course Resources

Textbook

The textbook is optional for this course, but is a good resource for anyone who is interested. Most classwork and lab programming assignments will come from the book, and lectures are based on the content in the book as well.

Problem Solving and Program Design in C, by Jeri R. Hanley & Elliot B. Koffman, Eighth Edition.

In Summer 2021 rented it from Amazon for $35 to use on the Kindle App on my iPad. Other options for renting or buying the textbook exist. If anyone finds any particularly good ones, let me know and I’ll put them up here.

I also use A Tour of C++ by Bjarne Stroustrup (the author of C++) as a reference during the C++ portion of the course.

Linux server

We have a shared course server for you to develop, compile, and run your C programs on. Details for how to access the server can be found on the lecture 1 page.

Advice from previous students

At the end of the semester, I ask students what their advice for students who will be taking this class in the future is. Here’s the compiled advice. There are some changes to the course this semester, but a lot of the advice is still relevant.

Optional open lab and TAs

There is an optional open lab on Fridays in the CS Success Center (Barnard Hall 254) from 10am to 4pm. Note that there is no lab during the first week of classes (Friday, January 20th)! However, even during weeks when no lab is due, there will still be TAs in the lab to help you.

Our TAs are Britney Gibbs (in lab 10-1pm; grading sections 001 and 003) and Shahnaj Mou (in lab 1-4pm; grading sections 002 and 004).

You should contact your TA via Discord if you have any questions about grading on labs or programs or need extra help.

Lecture videos

Lectures are recorded and available to watch after class. However, if there are technical difficulties recording a lecture, it will not be re-recorded, so come to class when you can to make sure that you do not miss course content or announcements. The videos are linked in the schedule above and are all stored in this public Panopto folder if you’d like to access them that way.

Instructor office hours

My office hours are Thursdays and Fridays, 3-4:30 in the CS Success Center (Barnard 259). You can also contact me on Discord to set up a different meeting time, or drop by my office (Barnard 359) if my door is open. You can find office hours for all CS faculty here.

SmartyCats

There is SmartyCats tutoring for this course! Visit their website to find out more. You can also apply to be a SmartyCats tutor yourself for other CS courses you’ve taken, or for this one next semester.

Computer Science Success Center

There are free tutors available in Barnard 259. More information here.

Discord server

All course communication will be through our course Discord server. See D2L announcement for link. Please change your nickname to your full name (first and last). Additionally, I suggest managing your notification settings. Check out Discord’s Notification Settings 101 page to get started. You may also need to manage the application notification settings on your device.

Course outcomes

By the end of the course, students should be able to:

  • Navigate a Linux operating system using the command line.
  • Use vim to edit files.
  • Write code using C syntax.
  • Build computer programs using the C language.
  • Take advantage of major capabilities of the C language, including pointers, dynamic memory allocation and structs.
  • Apply the power of pointers, structs and strings to C programs.
  • Apply the programming knowledge you learned to solve basic real-world problems.
  • Write object oriented code in C++.
  • Build object oriented computer programs using C++.
  • Explain the difference between procedural programming and object oriented programming.

Grading

You will be graded on the following:

  • 25 classwork assignments (lowest five dropped): 10%
  • 6 labs (lowest two dropped): 40%
  • 2 projects: 32%
  • 3 quizzes (including final): 18%

After any curving, your grade will be determined by your total score as follows: 93+: A; 90+: A-; 87+: B+; 83+: B; 80+: B-; 77+: C+; 73+: C; 70+: C-; 67+: D+; 63: D; 60: D-.

Bonus

There are three ways to earn bonus points in this class.

Catch errors in course materials

If you find an error in any of the course materials (typo, incorrect statement, etc.), post in the #errors-in-course-material channel on Discord. I will decide whether it’s truly an error and not a duplicate. If it is really an error, you get a quarter of a point. Only the first person to post about an error gets the points. You can earn a max of 1 total point toward your 100 for the course (for four errors).

Additional work throughout the semester

Since five classworks and two labs are dropped, your work on dropped assignments may be counted as a bonus. There may be additional assignments that you can complete for bonus as well. The maximum bonus you may earn from this is 3 points out of 100 for the semester.

Here’s how this bonus category will be computed. First, recall that you can only earn three points total, even if you got more than three total. The following things sum up for your bonus score:

  • 1 point: a score of 50% or more on Lab 5;
  • 1 point: a score of 50% or more on any of the 6 labs beyond your required 4;
  • 0.1 point: any classwork beyond your required 17

Course survey and evaluation

If 75% or more of the class completes the mid-semester course survey (through D2L), whole class gets 1 bonus point. Same goes for the course evaluation (through the university system).

Late assignment policies

To run a course of this size we cannot accommodate individual requests for extensions on assignments; therefore, we have strict rules for when assignments are due, but have some leeway built in. Please read the bullet points below carefully, respect the policy, and get help early if you are having any problems. We want you to succeed!

  • You are responsible for any announcements about assignments made in class, on Discord, on D2L, and here on the course website.
  • All assignments are due on their due date by the Anywhere on Earth (AoE) timezone, which is 6 hours behind Bozeman (Actually, it’s only 5 hours behind during standard time, but we’ll go with 6 hours behind at all times). This means that the real due date is 6am the following day. If you submit labs and programs within 24 hours of the due date, you get 25% off of whatever score you earn. If you submit within two days of the due date you get 50% off. Otherwise, no points are possible.
  • You can submit as many times as you would like; only your last submission will be graded.
  • Classwork cannot be submitted late.

Missed quiz policy

Any conflicts with a quiz must be discussed with me prior to missing the quiz. I follow University policy on makeups, which allows that serious illness or a serious family emergency are valid reasons requiring an accommodation. Most other reasons (employment conflict, travel plans) are not valid.

Collaboration policy

On all assignments, you may:

  • Share ideas with others.
  • Help others debug their code (or receive help debugging your code from someone else).

You may not:

  • Share your code with other people.
  • Submit code that you did not write.
  • Modify someone else’s solution and claim it as your own.
  • Post your own solutions on the internet.
  • Post the course assignments or quizzes on the internet.

Academic misconduct

In line with the MSU student code of conduct, if I or the teaching assistants suspect that you have committed academic misconduct, we will schedule a meeting with you to discuss. If, after the meeting, we believe that you did commit academic misconduct, you will receive a 0 on the assignment and I will submit a report to the Dean of Students. It’s just not worth it to cheat in this course.

Important dates

The last day to drop the course online (with no instructor or advisor approval) is January 31st. The last day to drop without a W grade (instructor or advisor approval required) is February 7th. The last day to drop with a W grade (instructor and advisor approval required) is April 19th. See the full add/drop schedule for more information.

Diversity statement

Montana State University’s campuses are committed to providing an environment that emphasizes the dignity and worth of every member of its community and that is free from harassment and discrimination based upon race, color, religion, national origin, creed, service in the uniformed services (as defined in state and federal law), veteran’s status, sex, age, political ideas, marital or family status, pregnancy, physical or mental disability, genetic information, gender identity, gender expression, or sexual orientation. Such an environment is necessary to a healthy learning, working, and living atmosphere because discrimination and harassment undermine human dignity and the positive connection among all people at our University. Acts of discrimination, harassment, sexual misconduct, dating violence, domestic violence, stalking, and retaliation will be addressed consistent with this policy.

Accommodations

If you have a documented disability for which you are or may be requesting an accommodation(s), please contact me and the Office of Disability Services as soon as possible.

How to succeed in this class

What you can do:

  • Keep up with the course by attending class, checking Discord, being aware of the course schedule, and doing all assignments on time.
  • Be an active participant in class. This means asking and answering questions in class and on Discord, seeking help when needed, and contacting the instructor or the course assistants using Discord if you have any questions outside of class time.
  • Be respectful of your classmates, your instructor, and the course assistants.
  • Do your own work.

What I can do:

  • Grade promptly (exact guarantees TBD).
  • Post assignments well in advance (at least two weeks before due date for labs; at least three weeks before due date for programs).
  • Respond to all Discord messages and emails within one business day.
  • Create a course atmosphere conducive to learning by respecting all of my students and being enthusiastic about course material and my role in helping you learn.

This syllabus, course lectures and presentations, and any course materials provided throughout this term are protected by U.S. copyright laws. Students enrolled in the course may use them for their own research and educational purposes. However, reproducing, selling or otherwise distributing these materials without written permission of the copyright owner is expressly prohibited, including providing materials to commercial platforms such as Chegg or CourseHero. Doing so may constitute a violation of U.S. copyright law as well as MSU’s Code of Student Conduct.

Instructors are free to use this material in their own courses. Feel free to drop me a line if you do but no need.