Course: CS 161 – Introduction to Computer Science I
Instructor: Tim Alcon
Two fundamental rules
- You are responsible for knowing the contents of the syllabus and all of the information about the course provided on Canvas.
- You are responsible for knowing the contents of any instructor emails sent to you, instructor messages sent to you via Canvas or Piazza, and instructor announcements made on Canvas, which means that you should make sure you receive such communications, that you check for new ones at least once a day, and that you read them. (You do not have to read all posts anyone makes in Piazza, or even all the posts I make in Piazza - just the ones that are in response to a post you made.)
OSU catalog course description, including pre-requisites/co-requisites
Overview of fundamental concepts of computer science. Introduction to problem solving, software engineering and object-oriented algorithm development and programming. Lec/lab. PREREQS: MTH 111 or Placement Test or Placement Test or MTH 112* and for CS Double Degree students: BA/BS and (MTH 111 or MPT>=24 or MPAL>=061)
- identifiers and primitive data types
- assignment, arithmetic, logical and relational operators
- expressions and statements
- flow of control: selection and repetition
- functions, parameter passing, call by value and call by reference
- object-oriented programming
- one- and two-dimensional arrays, strings and other structured data types
Course Learning Outcomes
At the completion of the course, students will be able to…
Design and implement programs that require
- various control statements involving selection and repetition
- expressions with variables, constants, function calls, pointers, and arithmetic/relational operators with mixed data
- arrays, strings, and other data structures
- library functions and programmer-defined functions with parameter-passing by value and by reference
- Define and use classes and objects
- Debug programming syntax and run-time errors.
- Describe and apply basic software engineering design principles and software quality factors.
C++ Early Objects, 9th ed. by Gaddis et al.
- Canvas is the course management software used for this course.
- TEACH is the website where you will enable your ENGR account so you can log in to the school server ("flip").
- Ecampus Exams and Proctoring Form is where you will tell us who your proctor will be for the exams.
- PuTTY and Terminal are terminal emulators – they provide a window where you will interact with the OSU server, "flip", using a command-line interface. Terminal is built into Macs. For Windows you can download and install PuTTY.
- Linux is the operating system used on flip.
- scp and FileZilla are ways you can transfer files between your computer and flip. You can use the scp command in the command line of your terminal emulator, but FileZilla provides a convenient graphical interface.
- vim/nano/Xcode/Visual Studio are examples of code editors that provide an environment in which to create and edit computer programs.
- Mimir is the site where you will submit your code for the assignments.
- Piazza is an asynchronous Q&A discussion forum where you can get official answers from the instructor.
- Slack is a synchronous discussion forum for more casual conversation with fellow students. I will also hold occasional office hours there.
- More information about these tools is available in the "Start Here" module on Canvas.
There will be two proctored exams in this course. You will have a week during which to schedule each exam. You will be responsible for finding a proctor, submitting your proctor info to Ecampus, and scheduling a time for your exam (within the allotted week). If you consider using Proctor U, remember that it doesn't work with Linux. There is more information about proctoring in the Proctored Exam Information module.
Coursework and Grading Policies
- For accurate results, you must test your code on the school server ("flip"). It is possible for code to compile and run correctly in another environment, but not on the school server. Your code will be tested on Mimir, which uses the same compiler that is used on flip.
- If your program doesn't compile on flip, using the specified file names, it will get a zero, even if it works perfectly in some other coding environment.
- Your code will be tested to make sure it works correctly. It is your job to make sure that your code will behave correctly for any possible tests.I provide one simple test on Mimir for which you get immediate feedback, so you can verify that your code is compiling and there aren't any formatting issues. The remaining tests are "hidden".
- Late submissions are not graded. It is better to submit an incomplete (but compiling) program on time for possible partial credit than to not have your program graded at all.
- Be aware of what time zone Canvas is using to display deadlines. If it's not your local time zone, you can set it to be. The Canvas phone app always displays times for the time zone the phone is in. This is important to keep in mind if you will be traveling.
- Always ask first before using any commands or constructs that we haven't covered yet, otherwise you may lose points. The main reason for this is that I don't want you to circumvent things the assignment was designed to make you do.
- If you disagree with a score on any coursework, contact your TA by email within one week of receiving your grade. If you are dissatisfied with your TA's response (or if they neglect to respond at all), then you should contact me about it.
- There is no extra credit.
- I don't plan to “curve” the grades, but that's something I'll re-assess at the end of the term.
- Makeup exams take considerable effort to schedule, so they will not be given under normal circumstances. If you learn about an event that may cause you to alter your exam scheduling, then contact me and your proctor (or the testing coordinator) as soon as you can so that accommodations may be considered.
- Incompletes will be given very rarely. If you have been doing well in the course so far, but an emergency comes up that prevents you from continuing according to schedule, let me know as soon as you can.
Weights for Grading
Letter Grade Percentages
Being Mentally Prepared
Learning how to program a computer can be quite challenging for most people. You should expect to spend 16-20 hours/week. However, that is only an estimate. Some people will find the material more challenging than others - those people may require more time.
Other people in the course may have more background in the subject than you do. Don't feel intimidated or put off if other students talk on the discussion board about topics that we haven't covered yet (or may not cover in this class at all). What's important is that you understand what we have covered.
Taking online courses tends to feel more isolated than taking on-campus courses. Even though there are still all the normal course elements - lectures, readings, homework, a teacher whom you can ask questions, etc. - sometimes students in an online course will feel like they are "teaching themselves" because interactivity in such a course is less forced and less immediate. I can't see or hear you, so I can't judge whether you're having trouble by your tone or expression. I am always happy to help, but you have to take the initiative and let me know when you run into problems.
When you have a question about something, the order of steps you should take to pursue answers is roughly the following:
- Review the relevant materials (assignment description, readings, lectures).
- Search the class discussion board on Piazza (it can take some practice to learn how to refine your searches well).
- Post to the class discussion board on Piazza (by doing #1 and #2 first, you might save yourself asking a question, and you might also then be better able to help others). When you post a question on Piazza and it's answered there, that benefits other people who have the same question (if you're shy, you can post anonymously).
- If you've tried #1-3 and feel like your question hasn't been fully addressed, please email your assigned TA or myself.
You are allowed to post to the discussion board any non-working code you need help with, but you should post only as much as is necessary for your question. Do not post working code until after the assignment due date. When answering a posted question, please use pseudocode or give hints so the student will have the satisfaction (and learning reinforcement) of figuring out the solution for themselves. When you are willing to help others on the discussion board and take pains to not make anyone feel like they asked a dumb question, you are reinforcing both your technical knowledge and your people skills, both of which are highly valued not just here, but out in the real world.
Online tutoring is available. The link to the signup form is here.
For this class, it is encouraged for students to discuss course content with each other, even including general discussion of homework assignments and how to fix specific issues. However, each person must develop her or his own individual solutions (except of course in group assignments, where each group must develop its own solutions). In particular, a student may not copy (by any means) another's work (or portions of it) and represent it as her/his own. Plagiarism can result in drastic consequences for both the person who copied and the person who allowed them to copy. These may include a zero for the assignment or failure from the course. If you make your code publicly accessible (such as in a public github repository), that qualifies as plagiarism.
Students with Disabilities
Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.
Student Conduct Code
This program strives to prepare students for careers in computer science, which includes preparing students to communicate professionally. Therefore, students in this class are expected to communicate in a professional manner in discussion forums, email messages and all communications for this course. Critiques, disagreements, problems, or other topics of a sensitive nature can be addressed, but should be addressed civilly and professionally. If a student's communications become unprofessional, disruptive, abusive, inflammatory, or if they otherwise obstruct the learning process of the class, the instructor may restrict the student from participating in the electronic forums associated with the class and notify Ecampus and the OSU Office of Student Conduct and Community Standards. Productive learning communities and workplaces depend on civil, professional discourse. It is our hope that this policy strengthens your learning community and prepares you for the professional workplace.
Statement of Expectations for Student Conduct (Links to an external site.)
Posts to Canvas or Piazza discussions or Canvas groups are public messages, and all such posts will be viewable by the entire class or the assigned group members. If you prefer that only the instructor sees your communication, use a private message or email.
Posting of personal contact information is strictly at your own risk.
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.