CPS 1 - Principles of Computer Science
Welcome!
Location: Social Sciences 229 (lectures and lab sessions in same room)
Class time: Monday through Friday, 2:00-3:15pm.
Labs: Tuesday and Thursday, 3:20-4:20pm (We may end up dividing into two lab sessions, depending on the size of the class.)
Instructor: Nihshanka Debroy (ndebroy (at) cs (dot) duke (dot) edu)
Office hours: After class, or by appointment (LSRC D206, 919-660-6512)
Announcements
June 27 - Review Session for Final Exam
Textbook
This textbook is recommended, not required. It is possible to get through the class without it (by attending the lectures and reading the notes regularly). But it may be good to have this as a reference book.
Course Description:
Intended for students not majoring in computer science, this course is an introduction to the field of computer science - the theoretical foundations, basic programming and algorithms, computer systems and the internet. We will cover the following broad topics:
- introduction to the field of CS
- the Internet (HTML, CSS)
- basic algorithms and graph theory
- computer arithmetic
- introduction to computer architecture
- Java programming (data types, objects, classes, methods, arrays)
- algorithmic complexity (sorting and searching methods, recursion, what are 'NP-hard' problems ?)
Grading
The grading scheme looks like this at present:
- 30% homework/lab assignments
- 20% final project
- 20% midterm exam
- 25% final exam
- 5% class participation
A couple of quizzes may be added later on, but they are not part of the syllabus currently - if added, you will know about these quizzes at least a couple of days in advance. Roughly, we will have a lab assignment for each major concept we learn. The goal is that you get a chance to apply concepts you have learned to actual problems.
Grades will be assigned, based on the usual cutoffs: 90%+ is an A, 80%+ is a B, 70%+ is a C, 60%+ is a D. This is tentative - the cutoffs may go down,
but they will not go up. Although grades are important, the larger goal here is to introduce you to concepts in computer science and for you to enjoy
applying them to tangible problems.
Late homework policy
10% will be taken off if the assignment is turned in 1 day late, and 25% taken off if 2 days late. After that, 0 credit will be given, unless there are unusual circumstances that were discussed with me earlier. A weekend counts as a single day, for lateness purposes.
Working together is an excellent way of learning computer science. So I encourage you to clarify doubts with each other. Depending on the size of the class, you may work in groups of two (as long as both members contribute to the work). For the course project as well, you may work in groups of two. However, no collaboration is permitted on the exams.