Announcements

Course Info

CSCI 6201 Software Fundamentals is a bridge course for master's students in Computer Science and Cybersecurity. The course reviews programming in a high-level object-oriented language, with an emphasis on core programming skills, objects, and fundamental data structures. This semester, we will use Python 3 together with pseudocode. Topics include programming fundamentals, lists, object-oriented programming, linked lists, stacks and queues, recursion, searching and sorting, trees, hash tables, and basic algorithm analysis. The goal is to build a strong programming and data-structure foundation for more advanced graduate computer science courses.

The course website is a dynamic resource. The schedule, notes, assignments, and other materials may be updated during the semester based on the progress and needs of the class. Please check the course website regularly for updates.

Course information and announcements will be posted on the course website and Blackboard. We will also use a shared Google folder for course materials and class discussions. Your feedback is always welcome and can help us improve the course throughout the semester.

Meeting Times:

Section Days Time Room Instructor

10

Thursday

10:00 AM - 12:30 PM

TOMP 405

Xiaodong Qu

Support Staff & Office Hours

Name Office Hours Location

Xiaodong Qu

TBD or By Appointment

SEH 4640 or Zoom

Course Goals

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

  • develop and strengthen core programming skills using Python, including variables, conditionals, loops, functions, lists, and problem solving

  • develop proficiency in object-oriented programming, including classes, objects, methods, inheritance, and method overriding

  • understand and implement core data structures, including linked lists, stacks, queues, trees, and hash tables

  • apply recursion, searching, and sorting techniques to solve programming problems

  • analyze the basic efficiency of programs and data-structure operations using Big-O notation

  • choose appropriate data structures and programming approaches for common computational problems

Grading Policies

Grades will be weighted as follows:

20%

Lab Assignments (2 labs, 10% each)

30%

Quizzes (2 quizzes, 15% each)

20%

Midterm Exam

25%

Final Project

5%

Class Participation

Schedule

WEEK DATE TOPIC ASSESSMENT
1 08/27 Getting Started with Python  
2 09/03 Conditionals, Loops, Functions, and Lists Lab 1 Due — Sunday 09/06, 11:59 PM
3 09/10 Practice with Functions and Lists  
4 09/17 Classes and Objects Quiz 1
5 09/24 Lists, Stacks, and Queues  
6 10/01 Linked Lists, Trees, and Hash Tables — Basic Concepts  
7 10/08 Recursion and Basic Efficiency Midterm Exam
8 10/15 Working with Data in Python  
9 10/22 Data Processing and Problem Solving Lab 2 Due — Sunday 10/25, 11:59 PM
10 10/29 Searching and Sorting — Basic Ideas  
11 11/05 Review and Problem Solving Quiz 2
12 11/12 Final Project: Exploring a Dataset with Python  
13 11/19 Final Project: Data Analysis and Visualization  
  11/26 Thanksgiving Break — No Class
14 12/03 Final Project Workshop and Course Review  
  12/11 Final Project Due

Inclusion Statement

Diversity, inclusion, and a mutual sense of belonging are all core values of this course. All participants in this course must be treated with respect by other members of the GW CS community. We must all strive, students and faculty both, to never make anyone feel unwelcome or unsafe in any way. Violations of these principles are viewed as unacceptable, and we take them very seriously. If you ever feel discriminated against or otherwise excluded, no matter how minor the offense, we encourage you to reach out to Xiaodong, or one of the college deans.

Lab Policy

This course includes two lab assignments, each worth 10% of the final course grade. The labs are designed to give you hands-on practice with the programming concepts covered in class.

Each lab will normally be released about two weeks before it is due. Labs are due on Sunday at 11:59 PM. You are strongly encouraged to start early and use office hours if you have questions.

Lab assignments will be submitted electronically through Blackboard. Please make sure that your submission is complete and successfully uploaded before the deadline.

Late Policy

Late work may receive a penalty. If circumstances affect your ability to complete an assignment on time, please contact the instructor as early as possible.

If a medical condition or other significant emergency affects your coursework or attendance, please contact the appropriate university office and the instructor so that reasonable accommodations can be considered. Official disability-related accommodations should be arranged through GW Disability Support Services (DSS).

Academic Integrity

Academic honesty is required in all your work. Under no circumstances may you hand in work done with or by someone else under your own name. Discussing ideas and approaches to problems with others on a general level is encouraged, but you should never share your solutions with anyone else nor allow others to share solutions with you. You may not examine solutions belonging to someone else, nor may you let anyone else look at or make a copy of your solutions. This includes, but is not limited to, obtaining solutions from students who previously took the course or solutions that can be found online. You may not share information about your solution in such a manner that a student could reconstruct your solution in a meaningful way (such as by dictation, providing a detailed outline, or discussing specific aspects of the solution). You may not share your solutions even after the due date of the assignment.

In your solutions, you are permitted to include material which was distributed in class, material which is found in the course textbook, and material developed by or with an assigned partner. In these cases, you should always include detailed comments indicating on which parts of the assignment you received help and what your sources were.

When working on quizzes, exams, or similar assessments, you are not permitted to communicate with anyone about the exam during the entire examination period (even if you have already submitted your work). You are not permitted to use any resources to complete the exam other than those explicitly permitted by course policy. (For instance, you may not look at the course website during the exam unless explicitly permitted by the instructor when the exam is distributed.)

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook:

Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion.

This policy applies to all course work, including but not limited to code, written solutions (e.g. proofs, analyses, reports, etc.), exams, and so on. This is not meant to be an enumeration of all possible violations; students are responsible for seeking clarification if there is any doubt about the level of permissible communication.

The general ethos of this policy is that actions which shortcut the learning process are forbidden while actions which promote learning are encouraged. Studying lecture materials together, for example, provides an additional avenue for learning and is encouraged. Using a classmate’s solution, however, is prohibited because it avoids the learning process entirely. If you have any questions about what is or is not permissible, please contact your instructor.

Academic Accommodations

If you believe you need accommodations for a disability or a chronic medical condition, please contact Disability Support Services (DSS) at GW to arrange an appointment to discuss your needs. As appropriate, the office will issue students with documented disabilities or medical conditions a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact Student Disability Services as soon as possible.

To receive an accommodation for a course activity, you must have an official accommodation letter from the Disability Support Services (DSS) at GW and you need to meet with course staff to work out the details of your accommodation at least two weeks prior to the activity.

You are also welcome to contact any of the course staff privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Disability Support Services (DSS) at GW.

Programming Style

Programming is not a dry mechanical process, but a form of art. Well written code has an aesthetic appeal while poor form can make other programmers and instructors cringe. Programming assignments will be graded based on style and correctness. Good programming practices usually include many of the following principles:

  • A comment at the top of the program that includes:

    • Program authors

    • Date or Dates

    • A brief description of what the program does

  • Concise comments that summarize major sections of your code

  • Meaningful variable and function names

  • Function comments that include:

    1. description of what function does

    2. description of input value(s) (parameter values)

    3. description of return value

  • Well organized code

  • White space or comments to improve legibility

  • Avoidance of large blocks of copy-pasted code