Rose Hulman - digshake/CSE131-Redesign GitHub Wiki
CSSE 120: INTRODUCTION TO SOFTWARE DEVELOPMENT
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:
- Syntax and semantics
- Objects, types, variables, expressions, and assignment
- Branching control structures
- Explicit loops, both definite and indefinite
- Functions, parameter passing, user-defined functions
- Input and output, to both consoles and text files
- Sequences, including lists and strings
- Indirection, box and pointer diagrams and mutable objects
- Constructing objects, and using their methods and instance variables (fields)
- Components of a class, as expressed in code as well as in Unified Modeling Language (UML) or other such diagrams
- Modularity and structured decomposition to break a program into smaller pieces
- 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):
- An appropriate integrated development environment with version control
- Coding to a specification
- Iterative enhancement
- Pair programming
- Test-first programming
- Documenting software, for internal readers and for external readers
- 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:
- Division of labor
- Integrating teammates' work
- Modularity and and structured decomposition to break a program into smaller pieces
- Constructing objects from new APIs as needed, and using their methods and instance variables (fields)
- Agile software development processes
- Team roles
- 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.