Rose Hulman - digshake/CSE131-Redesign GitHub Wiki

CSSE 120: INTRODUCTION TO SOFTWARE DEVELOPMENT

Fall 2018/2019 Semester

SP23 (current)

An introduction to procedural and object-oriented programming with an emphasis on problem solving. Problems may include visualizing scientific or commercial data, interfacing with external hardware such as robots, or solving numeric problems from a variety of engineering disciplines. Procedural programming concepts covered include data types, variables, control structures, arrays, and data I/O. Object-oriented programming concepts covered include object creation and use, object interaction, and the design of simple classes. Software engineering concepts covered include testing, incremental development, understanding requirements, and teamwork.

Sequence:

Intro. to Software Development -> Object Oriented (220) -> Data Structures (230)

They are on a quarter system (fall, winter, spring, summer). The 120+220 sequence is 20 weeks, so a bit more than 131.

Audience(s)?

Seems like a CS focus, but not clear on enrollment limitations.

Learning Outcome(s)?

From "Learning Objectives" section of https://www.rose-hulman.edu/class/csse/csse120/202010/Syllabus_CourseInformation/syllabus.html --- that was FL19, but they appear unchanged in SP23.

  • Analyze, explain and use appropriately in coding: Fundamental programming concepts including:
    1. Syntax and semantics
    2. Objects, types, variables, expressions, and assignment
    3. Branching control structures
    4. Explicit loops, both definite and indefinite
    5. Functions, parameter passing, user-defined functions
    6. Input and output, to both consoles and text files
    7. Sequences, including lists and strings
    8. Indirection, box and pointer diagrams and mutable objects
    9. Constructing objects, and using their methods and instance variables (fields)
    10. Components of a class, as expressed in code as well as in Unified Modeling Language (UML) or other such diagrams
    11. Modularity and structured decomposition to break a program into smaller pieces
    12. Using an application programming interface (API)
  • Design, implement, debug and test small programs for solving problems motivated by real-world interests, using the above concepts and modern software engineering practices including (where appropriate, and at an elementary level):
    1. An appropriate integrated development environment with version control
    2. Coding to a specification
    3. Iterative enhancement
    4. Pair programming
    5. Test-first programming
    6. Documenting software, for internal readers and for external readers
    7. Use of application programming interfaces (APIs)
  • Work for 2 - 4 weeks in a team of 3-4 students on a small software development project, demonstrating (at an elementary level) effective use of:
    1. Division of labor
    2. Integrating teammates' work
    3. Modularity and and structured decomposition to break a program into smaller pieces
    4. Constructing objects from new APIs as needed, and using their methods and instance variables (fields)
    5. Agile software development processes
    6. Team roles
    7. Conflict resolution

Programming Language(s)?

Python (PyCharm IDE)

Course Structure

3 days/week, 10 weeks (30 sessions):

  • Flipped
    • Crazy....YouTube...Wonder what their ad revenue is???
  • Prep before each session: Reading, videos, quiz, & follow-along activities
    • Quizzes are participation only: low stakes, full-credit for reasonable attempts.

Exams split between paper and online. (They have an admission ticket system?)

Grade: 3 exams + 1 project. (Wait...no HW?...But must pass all prep and coding assignments to pass course: "To pass the course, you must complete (to the satisfaction of your instructor) ALL the Preparations and ALL the PyCharm coding exercises.")

Teachability - Division of labor

Seems to be single instructor per section. I think RH has small class sizes and limits enrollment.

Institution has 1:20 class sizes (1:11 faculty:student). Not clear if this applies to CS120.

Undergrad Community

Not clear.

TA Involvement

Yes --- In-class assistants. Answer questions with Teams (?).

Content

Vars, conditionals/selection, iteration, UML+Box&Pointer Diagrams, functions, unit testing, classes (implementation & use), mutation, ..

It's not clear what data structures are covered. No clear mention of list, dict, set, etc.