CSCI 23000 Computing I Syllabus

Course Description

This course focuses on the context of computing in history and society, information representation in digital computers, introduction to programming in a modern high-level language, ethics, introduction to algorithms and data structures, and their analysis and implementation as programs.

CSCI 23000 and the PUL

All courses at IUPUI are intended to reflect a number of the Principles of Undergraduate Learning (PULs) identified by the campus. CSCI 230 reinforces these principles:

Section Information

section type location day(s) time
8989 lecture IT 252 MW 4:30 - 5:45
8990 lab SL 251 M 3:00 PM
8991 lab SL 251 W 3:00 PM

Instructor Information

Lecture Instructor:
Andy Harris
email:
aharris@cs.iupui.edu
Office Hours:
Mon - Thurs 11-12
other times by appointment / skype / IM
Office Location:
SL 236
Phone:
(317) 274-8491
TAs:

Textbook

How to Think Like a Computer Scientist (Free online book - DO NOT PURCHASE

Other course notes and examples will be found on class main page

Assignments and grading

Grades are based on weekly assignments. These will include a combination of in-lab exercises, homework assignments, quizzes, and programming projects. Assignments will be turned in via oncourse unless otherwise indicated. There will also be two exams and a final project.

Grade breakdown is as follows:

labs
40%
midterm exam
20%
final exam
20%
final project
20%

A note about Excellence

This is a university-level science class in a very demanding discipline. It will be difficult (but possible) to get a good grade in this class. If you work hard, turn in all your homework, and show some skill, you should have no problem earning As and Bs on all assignments.

That does not mean it is easy to earn a perfect score on any assignment (although it has been done on all of them.) Some students have expected to earn a perfect score when they fulfill all the requirements. That is not my policy. If you do all I ask, you will get a good grade. If you want 100%, you need to do something amazing.

I will always give you a minimum set of expectations for assignments. If you fulfill all of those expectations, you will likely earn a B+ or A- for that project. If you do everything I ask, you will probably get an A, but that does NOT mean you will get 100%. I reserve those last few points to reinforce brilliance. Many assignments have 'black-belt challenges,' which are suggestions for how you might choose to excel. Of course, there are many kinds of excellence. Whether and how you choose to go beyond the standard requirements is up to you.

Attendance

Computer science and computer programming are challenging topics. We will do our best to make sure the content of every single session is relevant and interesting. If you miss one session, you will fall behind. The topics tend to build on each other, so missing even one session can cause a ripple effect that can jeapordize the entire semester.

This course has both live (traditional classroom lecture) and distributed (online video-based) sections. You are enrolled in only one of these sections, but they are the same course. Students in the DE section are welcome to attend lectures, and students in the live section are encouraged to watch the videos for backup. All students are strongly encouraged to participate in the lab session once a week.

Attendance in lecture sections are required for students enrolled in standard version of the course. Lab attendance is the number one predictor of student success, especially for students in the DE section. You are welcome to get more help from the lecturer or TAs during office hours or other scheduled times, but these are not an adequate replacement for participating in lab and lecture.

Some of you are enrolled in a "distributed education" section of this class. Distributed education is different than "distance ed." This is not an independant study class. We have regularly scheduled lab times, and I can be available to meet you in many different ways. Please get help when you need it. Most of you will need help at some time in the semester. That's normal and expected. Just ask, because (unlike a regular lecture) I can't see your eyes to see if you're following me.

This course has been taught using many different programming languages. In the last few years, it was taught using Java. This semester, we are using the Python language. Python has proven to be be a much easier language for beginners to understand, and it will help you grasp fundamental programming concepts more easily. However, some of the online materials are still focused on Java. Please be patient as I translate examples, videos, and assignments to this new environment.

Java will still be taught in CSCI 24000 (along with C and C++) so you'll still get to learn these critical languages.

Integrity Issues

Students are encouraged to discuss the concepts and principles amongst themselves. Such discussions help in understanding the material and/or different aspects of the topics taught in the class. Students may also assist in debugging each others code. It is unethical to directly transfer any portion of individual work products, either by printed or electronic means, between students. Student cooperation should not result in identical or near identical answers/code/documentation.

ALL THE MATERIAL SUBMITTED FOR GRADING MUST BE YOUR OWN EFFORT.

If this policy is violated then the following steps will be taken (at the instructor's discretion):

Internet use warning: The Computer Science department is particularly sensitive to dishonest leveraging of the Internet. Presenting information obtained from the Internet as your own is just as severe as claiming another student's work as your own. It is extremely important to cite works from the Internet or other resources when they are the basis for your own work. Your Internet research should not result in work products that are in identical or near identical to the original. Posting any part of the course including homework, exams, or projects is forbidden. Submitting any part of the course to code-for-hire or other support web sites is forbidden. Accessing any online chat, user forum, IRC, or any other interactive discussions during online testing is prohibited.