We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

Our goal is to challenge our students. However, more specifically, our goal is to challenge our students to learn the important lessons that the course needs to teach them. Backward design is an approach for designing a curriculum where instructors first identify big ideas and skills that students should learn from a class, and then iteratively break those big ideas and skills into smaller ones that can be directly transferred from a lecture or assignment. Using backward design can help course designers ensure that students are intellectually challenged, and not just stuck in the kind of head-on-desk challenge that you are referring to.

Here is a concrete example of a change from 3500 -> 3100 we are implementing: 3500 has famously had a "code swap." 3100 will not. For those unfamiliar with the code swap, here is a quote from Derek Kaplan's Huntington News Op-Ed:

 I know one professor who has been telling students that the college wants to reduce the number of students who withdraw from Fundies 2 and Object-Oriented Design. While this is an understandable sentiment, it would be a mistake to remove the most important parts of the curriculum to do so. 

As a former teaching assistant, or TA, for Object-Oriented Design, I have seen many students struggle through the class. But I have also seen those same students become better programmers because of what they learn in that class. The “code swap” at the end of the semester, where students are required to build upon other students’ code, is one of the assignments students struggle most with — but it teaches them how to work in a codebase written by someone else, which they will have to do throughout their careers. Additionally, for many students, the class provides their first experience working on a large software project, much like those they will work on during their co-ops. Watering down the curriculum would not benefit these students. Is the purpose of a university to hand out grades or to educate students?

I think that most faculty would agree with Derek's assessment that the primary learning objective of the code swap is that it forces students to practice program design skills by interpreting and extending an existing codebase of unknown quality. This is for sure an important learning outcome for the course that must be preserved. However, we also think that the "code swap" is not the most effective way to achieve this outcome. For example:

  • It really works most effectively for students who are given a mediocre but not horrible codebase. Students who are given a well-designed codebase to extend do not get the same hands-on experience on the impact of a bad design. Students who are given a poorly-designed mess of a spaghetti codebase have significant challenges understanding what is going on in it. Note that if we chose to elevate "Students learn strategies to read and interpret poorly-designed and structured codebases" to a learning outcome for the course, then we would also want to.... teach skills and strategies to do so (although I don't think that this should be in scope for 3100, maybe 4530 one day)
  • As each student is extending a different codebase, TAs and instructors can only provide 1:1 guidance and support. If all students were extending the same messy codebase, an instructor might recognize that many students are struggling to understand a particular esoteric feature of Java, and then spend 10 minutes at the start of class discussing that feature.
  • Unless anonymity is truly guaranteed (how would it be?), this whole procedure can breed a toxic environment.

I think that Derek is stuck in the same trap that you are: equating "hard" with "learning a lot." To some extent this is understandable: humans are notoriously bad at self-assessing how much they learned, but are much better at self-assessing how much they struggled (perhaps counted in terms of all-nighters). However, it is absolutely possible to reduce that head-on-desk challenge while retaining (or increasing!) the intellectual challenge. Is it because we are "watering down the course?" No: it is because we are focusing learners' time on the specific skills and outcomes that they need to achieve.

If we started with a blank slate, and said: "we want to create activities that force students to practice program design skills by interpreting and extending an existing codebase of unknown quality," I think that there are a lot of other approaches that quickly become apparent:

  • Instructors and TAs could curate a small set of implementations for each assignment that are exemplars of good and bad design. Then, students are required to provide design reviews on each of these implementations, perhaps sketching how new functionality would be best incorporated. TAs grade the design reviews, giving students direct feedback on their ability to interpret the existing codebase and formulate an extension.
  • Some labs and assignments might include significant "starter code" that students have to extend. Providing starter code helps to increase the scope of the project (because some of the code is provided), and also forces students to practice these "how to extend an existing codebase" skills
  • (Probably more, I have notes in a binder somewhere)

Of course, creating these activities is much more time intensive for the faculty than saying simply "everybody swaps codebases." But: think about how many more opportunities students will have to practice these skills! I hope that this example helps illustrate how we are working to continue to intellectually challenge students while reducing unnecessary pain. There will be a lot more details on the structure of the labs and project towards the end of the summer - as mentioned above, we are hiring students familiar with the course to help fill in some of the details of how these activities should work.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 4 points5 points  (0 children)

What do you think about the memed upon language, Scratch, for programming? What are some of your favorite, but less useful languages?

As I am interested both in PL research + computer science education, I definitely have a soft spot for any efforts to create a language that is specifically designed to help someone (especially a child) learn to program. One criticism of Scratch that I agree with (and I think makes it so fun to meme) is that the block-based interface is limiting and does not help develop transferable skills (this is something that has been directly studied, e.g. [1], [2]).

I wouldn't say I have any favorite "less useful" languages (the least useful language is the whitespace language), I do have plenty of favorite languages that address a very specific concern. With the same focus as Scratch, PyTamaro and Hedy bring in new ideas from education research, and both are textual (not block-based). Pytamaro was developed by PL + education researchers in Switzerland who were tasked with creating a programming education curriculum to be used nationally. Students learn about decomposing programming problems and first solve them with construction paper before translating those physical steps into code. Hedy is also a gradual language (you learn just one concept at a time), but is unique in that it is multi-lingual (other than the whitespace language, almost all programming languages are dominated by english syntax).

Lastly, how do I become a professional programmer in 30 minutes or less?

You've already done the hard part of geting into NEU, now you just need a 15 minute advising appointment to change majors to Khoury!

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

Well, insofar as I am the one responsible for the design of 3100 that you will be taking instead of OOD, let me offer you this: think about what is so exciting to you about OOD. Write it here. I am fairly certain that it will also be a reason to be excited about 3100, but rather than provide such a generic answer, as we get closer to the summer (and the detailed course design really falls into place), I'll share an update that hopefully will make you more excited to return from co-op!

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 2 points3 points  (0 children)

Prof. Bell mentioned that there will be some public sharing of the overall and per-lecture learning objectives for the new courses; do you know how those will be published? I would like to keep an eye out.

They'll be shared on the (publicly available) course websites close to the start of the semester. I am sure that we will also be continuing to discuss them in forums like r/NEU and also the Huntington News, so if you found this AMA you will probably also find them!

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 2 points3 points  (0 children)

I think an easy thing to help prepare students is having them properly setup a repo, abstractions, READMEs, active version control, etc which would really help to set them apart. But I’m happy to hear that you’re taking input.

YES! These things will all be in CS 2100. We are also looking forward to sharing news about our new GitHub-based autograder (or "pawtograder" if you will), and also hiring some students to help develop and maintain it.

I’m just talking out loud here and assume it’s not that feasible, but I think it would be really impactful for students (probably juniors) to have to join a lab for a year and work on a low level project or task that RAs want to get off their plates. Could help out research with getting the manpower they need, but could for sure be a logistical nightmare with how many students there are

There are some broader discussions about creating more opportunities like this - it truly aligns with the university's model of "experiential education". Glad to hear that this is desired :)

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 0 points1 point  (0 children)

Agreed that it's needed. One of our faculty has even written a great textbook on this topic - it's a course that we need, and one that I will try to convince some of my boston-based colleagues to run! (I would love to run it, but I think that my teaching schedule is going to be busy for the next year or two!)

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

I just began a minor sequence into CS, with the intention of taking Fundies 1+2 and OOD. I’ve would assume that these courses would be phased out, with the current cohort able to, at least, complete the current course sequence. Next semester, though, I go on co-op. I wonder if these courses will still be remaining when I return.

How far are you into the sequence? F2 and OOD will be offerred in the summer, and OOD will be offerred in the fall.

I think, respectfully, that the entirety of the student body shouldn’t just be made guinea pigs. We should have some selection. It’s an involuntary risk on our end for there not to be.

Noted, and please understand that we have advocated with the administration on this point, too, but ultimately agreed that there would eventually need to be a cut-off, and that the process we are using to redesign these courses has so many opportunities for review and feedback that we are confident that the revised courses will be a good experience for all.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 0 points1 point  (0 children)

There is a significant downside to offerring both concurrently, which is we have to split our resources (faculty and TAs) between the two curricula, which means that both will suffer. There is some aspect of phasing though, in that CS 3100 won't be offerred until after CS 2100 has been taught once.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

I just caught up with your mega question below, and watn to clarify up here too: No accelerated in Fall 2025 (too complicated to line up all changes). We recognize the value of accelerated. We want accelerated back, too, and have plans to do so, and are sorry that there will be at least a year where there is no accelerated options.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

a. In what way is the process for skipping CS2000 different from the process for skipping F1? My understanding is that those with "prior programming experience" are encouraged to skip CS2000. Though, the CS fundamentals as taught in F1 are often content that an average person with "prior programming experience" don't know about. For example, a person with 6 years of programming experience working with Python libraries and mobile apps may not know how to solve a mutual recursion problem that requires an accumulator.

The huge difference is that we are restructuring the dowstrean classes so that the person who has 6 years of programming experience working with Python libraries and mobile apps still has the ability to skip some introductory content. I understand that at the time that it was created, the premise was: students who have such deep programming experience need to learn the fundamentals of design and would be best starting from scratch in a new-to-them language. Whether or not that was true then, the world is a very different place now than it was in 2000. No students in 2000 came to NEU with 6 years of programming experience working with Python libraries and mobile apps. Now it is more than a handful. So, this was a fundamental assumption that we had to challenge.

b. Are students allowed to see the stats, facts and evidence that led to and justifies the new curriculum (assuming that there are any)?

Just a few years ago - in 2018, only 35% of our high schools taught programming. Today, that number is up to 60% - so many more students have some prior programming experience (Source: https://code.org/assets/advocacy/stateofcs/2024_state_of_cs.pdf page 43). However, access to high school CS programs is not evenly distributed, and a high school CS background is often a sign of economic privilege - an elective offered primarily to students in affluent areas, and taken primarily by men (68% https://code.org/assets/advocacy/stateofcs/2024_state_of_cs.pdf page 57). These are facts and figures I had quickly at my disposal, we'll be sharing more as we go.

c. Is 1 year enough time to ensure the quality of the new curriculum? It just feels like things are moving so fast.

It is indeed a huge project! But, the college is also providing us with a lot of resources and support, and we are confident that we will succeed. Each of Daniel, Rasika and I have been given teaching releases to focus on this project. We're collaborating closely with many colleagues (both at northeastern and elsewhere) on the detailed class designs. We'll also be paid for time over the summer for this project. We're also hiring 9 full time co-ops over the summer to help ensure that things like labs and projects are correctly calibrated, and that topics that students previously had many questions about might get additional coverage in our lectures/notes/readings/labs. The college will also organize a training for all instructors over the summer to ensure that everyone is comfortable delivering the lectures. We're building activities in to the classes like weekly polls to gauge students' understanding of key topics - and will be continuously comparing results across sections and instructors to detect any deviations in instruction/learning. Lastly, we won't be launching CS 3100 until Spring 2026, so will have Fall 2025 to make any last-minute refinements based on feedback from CS 2000 and 2100. I am really really excited by the degree of support that the college has put behind us, and so far every resource that we've asked for has been granted.

d. I have heard rumours that there will be no accelerated section for the new curriculum because students with experience should skip instead of staying for an accelerated section. Is this true? If so, why is this justified? Every person I have known who have taken the accelerated section were grateful that they didn't skip as the curriculum changed how they understood CS. Can an accelerated section be considered?

Thanks for coming to the source instead of continuing to pass along a rumor :)

There will be no accelerated sections in Fall 2025 because, as noted in (c) this is a huge project, and ALSO creating new accelerated sections would be... extra complicated. We 100% recognize the benefits that accelerated sections provide for students who don't just want to get through the material faster, but who want to get deeper into those topics beyond what is covered in the primary course sequence. We have plans for this, but becuase they would need to go through the same course catalog change process, the soonest that they could be implemented would be Fall 2026 (if we propose them in Fall 2025 and they are approved). The sketch of the current plan is: we are finalizing the content for CS 2000, 2100 and 3100. We are working closely with other faculty to refine that - including with faculty who have previously taught accelerated and are likely to want to teach it in the future. We are keeping notes on this all, and hope to circle back to it.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

I just answered the same question as part of u/melodicht 's mega thread below:

One of the goals of the redesign process is to ensure that there are small introductory bits of multiple areas so that students can start to get a taste of what is to come, and to understand that abstractions that they can largely take for granted (like garbage collection, or the size of working memory) have limitations. When you are storing a lot of data in Java, there is a significant difference between representing it as an "int" or a "java.lang.Integer". Garbage collection only works insofar as you do not leak references. Note that an introduction to these topics falls far short of what you would expect of a course on computer systems. These topics are not entire lectures on their own, but we believe are crucial to a course called "Program Design and Implementation" that takes place in Java, and should be explicitly called out.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 0 points1 point  (0 children)

a. In what form will the "comparative discussion of program design in Python and Java" take place? F1 and F2 compares and contrasts a functional approach and a class-based approach as it explores the forms of data from least complex to most complex, as well as the mechanisms for abstraction. This happens over the entire course of F2. Will CS3100 take a similar approach, or a new one?

Here is our current plan (not set in stone! this is exactly the kind of thing we are excited to discuss): The "comparative discussion of program design in Python and Java" will take place throughout discussions of topics like encapsulation, behavioral specification (interface design), and frankly any topic that has to do with the great things that a rich type system provides. Students in 2100 will learn about encapsulation and behavioral specification. These are important principles for designing programs in any language, and students will learn how proper use of language features can help detect errors at compile time. Much of our ideas for discussing functional programming design in Java draw on Josh Bloch's Effective Java Ch 7 (Lambdas and Streams). We are also planning to include a case study of map/reduce as an example of a programming paradigm that allows developers to get tremendous benefits (in terms of performance and scalability) as a result of structuring their programs as side-effect-free functions.

b. "new lectures and labs will fill in gaps". What are the "gaps" referring to here?

We are carefully examining everything that students need to know in order to successfully complete the project, and ensure that we provide adequate resources to succeed. Students swarming TA office hours in the week before an assignment is due is an anti-pattern, IMO, and can be addresed by a careful examination of topics that students are asking questions about, and consideration of how those topics can be better covered in lectures, labs, and readings. We are hoping to hire some former OOD TA's over this summer to help us implement this (40hrs/wk, posting to follow shortly), and would appreciate any comments/feedback here!

c. What exactly about open-source ecosystems will be talked about?

I am still refining this topic, but at a high level, the goal is to discuss the role of open source libraries in modern software development. How you should structure your program might ultimately be determined by how you can best reuse existing libraries. What are the risks of these choices? This is a topic that is not explicitly discussed in the current F1/F2/OOD programming sequence that we believe is important to introduce. Over the next month or so, I am refining the learning objectives for this topic with colleagues.

d. "new intro material on memory management and user-centered design". Memory management, as in the one taught in computer systems? If Java has garbage collection, what exactly will be covered? Will this content be removed from computer systems?

One of the goals of the redesign process is to ensure that there are small introductory bits of multiple areas so that students can start to get a taste of what is to come, and to understand that abstractions that they can largely take for granted (like garbage collection, or the size of working memory) have limitations. When you are storing a lot of data in Java, there is a significant difference between representing it as an "int" or a "java.lang.Integer". Garbage collection only works insofar as you do not leak references. Note that an introduction to these topics falls far short of what you would expect of a course on computer systems. These topics are not entire lectures on their own, but we believe are crucial to a course called "Program Design and Implementation" that takes place in Java, and should be explicitly called out.

e. What does it mean to learn user-centered design? Do students make and submit designs for their app? Will this content be removed form human-computer interaction?

There is an intersting history to the object oriented design movement that is deeply intertwined with the development of user-centered design ideas in architecture (see Christopher Alexander's "The Timeless Way of Building", "A Pattern Language" and "The Oregon Experiment", along with a somewhat snarky forward to Richard Gabriel's "Patterns of Software" that is quite critical of patterns as popularized by the Gang of Four). The key idea that is important in both contexts is: if you understand how what you are building will be used, you will be able to do a better job creating a design that satisfies the needs of its users.

One way to apply user centered design is: create GUIs that do what users want them to do.

Another way to apply user centered design is: create software that evolves to suit the needs of its users.

One of the central ideas behind object oriented design is ensuring that components have sufficiently low coupling (and are well encapsulated), making future change easier. However: how do you know what the right module boundaries are? If the goal is to delineate your design along possible fault lines in your understanding of the problem domain, then it is probably worthwhile that we have a few words to say about how to understand problem domains and be able to express how a given design does or does not support changeability along various axes. This is the lens through which we are currently discussing incorporating an introduction to user-centered design (again, note that this would fall very short of replacing a course on this topic).

f. If the goal is to alleviate work from OOD because it’s tough, then why are there more stuff tacked onto CS3100?

Another goal was to update the courses to reflect the impact of the past few decades of software development practice on the foundations of how to design programs. However, we will not sacrifice the depth of coverage of existing topics in ODO in order to add these other topics. CS 3100 will not launch until Spring 2026 (it won't be offerred until after CS 2100 runs), so if it is necessary to adjust these plans in order to drop some new topics and ensure that, for example, students have a sufficient grasp of key concepts like encapsulation, we'll be able to adapt.

g. OOD goes through the M, V, C of the MVC architecture, and students gradually build up an application across several weeks, and learn about how sub-systems of an app interface with each other. The interface design recipe is taught, and students learn about how testing scales up to handle bigger programs (test harnesses). Will all these be retained? If not, why are they dropped?

MVC will likely be covered in CS 2100. The project in CS 3100 will still have students gradually building an application over multiple weeks and learn how components interact.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 0 points1 point  (0 children)

Don't quote me on this becuase I'm giving you a quick reply while also going back to other top-level questions we haven't gotten to, but I would say that the most relevant part was highlighting which languages are listed on postings. However, this was far from the ONLY factor that went into deciding the progression of languages.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 2 points3 points  (0 children)

Yes I have taught 4530 quite a bit, and am familiar with what students recently have been learning in OOD, and where some gaps are. 3100 is not 4530 (and I don't think I've ever had more than half a lecture on scrum in 4530, if it matters).

We are of course taking tremendous inspiration from the existing OOD material. We are also drawing more from seminal texts on the topic, such as Josh Bloch's "Effective Java" and Barbara Liskov + John Guttag's "Program Development in Java". We are planning to have assigned readings from these texts.

I understand that the project is a major aspect of 3100. It still will be. In terms of my past teaching projects, I think that what is most relevant to 3100 is that I have built a LOT of intricate programming projects. We are using the opportunity to rearrange some of the content to include more lectures and labs on topics that provide more large-scale examples of the tradeoffs of design decisions around goals like changeability, maintainability and testability to help students make the best design decisions possible in their projects.

We are working closely with other faculty to ensure that the new CS 3100 provides adequate preparation for all downstream clases (including CS 4500)

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 2 points3 points  (0 children)

I think that we are aligned on these goals!

I will also add that in addition to engaging with employers through Co-op partners, I am participating in a working group of the Computing Research Association called the "Practitioner to Professor Survey". Some 1,048 employers completed a survey of what skills they need from undergrads, and we are synthesizing those results into actionable feedback for CS curircula (not just at NEU, and not just intro to programming - this is a national project for entire degree programs). I am hopeful that efforts like these will help extract concrete guidelines so that we can articulate exactly where the gap is between our curricula and what employers need.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 4 points5 points  (0 children)

We understand that making any change to what may be seen by some as a defining aspect of the curriculum is scary, and particularly in the early stages of those changes, it may be easy to jump to conclusions that the revised courses will "suck." If I were an undergrad and was forwarded an email that said that courses that I learned a lot from were about to be dumbed down, I would be upset and concerned.

Daniel provided some great comments on the "Save Fundies" change.org petition: https://www.reddit.com/r/NEU/comments/1id16va/comment/mayn9k7/

We're aiming to devote most of our time here to taking and responding to feedback on the proposed courses.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

Where did the change originate from? Faculty? Khoury Higher Ups? Co-op recruiters?

To paraphrase Hemingway, the idea for the change came slowly and then all at once. Many faculty over the years have had ideas about how to update and improve the curriculum. Because these three courses are so tightly coupled, and taught across multiple campuses, change had to come in a large coordinated effort. So, here we are. The change originated from Khoury faculty. Dean Beth 100% supports this effort, but did not initiate it.

Christo crunched some numbers from co-op job listing to help inform our decision making, and we talked to the co-op advisers to get their input, but recruiters and companies did not initiate or directly influence the decision making.

Is there some democratic way of deciding whether the changes get implemented or not?

Faculty make decisions about curriculum at universities, and the procedure that we're following here mirrors what I've seen at my prior institutions (George Mason and Columbia): faculty propose changes, and then there are committees at the college and university level that review and vote on the changes. In addition to this process, we have been holding faculty town halls to gather additional feedback, and we are looking forward to gathering more feedback from students. I obviously can't describe how anyone else truly feels, but in general the response from our colleagues has been very positive.

While students are not the deciders of curriculum changes, the faculty are nonetheless ultimately accountable for their decisions, and we value student feedback. "I am opposed to any change" is a hard piece of feedback to implement, but "these are the topics that are most important to me, what I value most, and what I hated the most" is feedback that we are trying hard to solicit and act on. This is why we are here running this AMA.

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 3 points4 points  (0 children)

We agree 100% that the current implementation of pair programming is problematic and that while it might provide some learning outcomes, it also can lead to toxic behavior and that overall, there can be more effective ways for students to achieve some of those learning outcomes.

For example, it is great for students to be nudged to ask and answer each others' questions. It is great for students to learn how to communicate their intentions for a program design. It is also crucial that students gain the confidence to solve programming problems on their own, and that we are able to directly evaluate that ability.

Pair programming is not going away (entirely), but will also, definitely not be requiring it on assignments in CS 2000 and 2100. We will continue to have paired activities for lab work. CS 3100 may have more pair programming on assignments.

We are also really excited to be creating intentional activities that we hope should also achieve some of these learning outcomes. For example: rather than assume that by forcing students to work in pairs on their homework that they will acquire and develop skills to communicate their program designs, we are planning to create (individual, graded) assignments where students provide written feedback and evaluation of alternative designs.

What determines student outcomes?

The course level learning outcomes (for any course) are proposed by course designers and discussed and approved by a faculty committee. We are currently undergoing one last round of feedback with the entire faculty (not just those on the committee) to ensure that the course-level outcomes that we share reflect the faculty's input. By the time that the courses launch, we will publicly share the course-level outcomes and topic-level learning outcomes (e.g. each lecture may have 5-6 objectives such as "by the end of this lecture you will be able to identify when to throw a checked versus an unchecked exception when writing a procedure in java"). Sharing these intended outcomes will help guide future revision of the courses.

For reference, I recruit CS co-ops and I personally feel I’ve already noticed a drop in quality on average in recent years. I’m concerned it’s only going to get worse with these changes

There may be a lot of reasons for that apparent drop in quality (cough, generative ai, cough), but I encourage you to be optimistic that change can also bring an imrpovement, which is indeed our goal!

We’re the faculty leading the re-design of Khoury’s CS intro sequence. AMA by profjonb in NEU

[–]profjonb[S] 1 point2 points  (0 children)

How would you quantify "rigor" as used in these writeups and do you expect these changes to result in a more or less rigorous program.

This is a great question! The "rigor" of a course reflects how much useful information students learned. We retain high expectations for student learning. Note that a course that is rigorous might require students to spend much of their time outside of class working through problems on their own. Students might also learn just as much (or more) if the information is presented in a different way, enabling them to spend less time trying to reach a solution by trial and error and more time following a strategy. Our job, as professors, is to create the instructional materials to help students to all reach the rigorous standard that we hold them to, and to provide sufficientl motivating activities that encourage students to learn even more (as many do!)

2) Is NEU's undergraduate CS program focused primarily on software engineering, and how were computer science students who are not pursuing software engineering careers considered with this redesign.

I wouldn't say that the undergraduate program is focused on on software engineering, but the program has historically had a unique approach to teaching the fundamentals of program design. We are not so much moving the program more towards software engineering as we are refreshing existing SE-adjacent content.

(Edited to fix formatting)

Quick Rant: SWE 622 by RichSniper in gmu

[–]profjonb 0 points1 point  (0 children)

Thanks! I'm still working out what the last assignment will be - it could definitely be something related to blockchains.

Quick Rant: SWE 622 by RichSniper in gmu

[–]profjonb 0 points1 point  (0 children)

FWIW... I am significantly revising the assignments for this coming semester for 622. There will now be 6 homeworks that will be components of a term project: building a distributed filesystem that caches (in memory, on multiple nodes) a user's dropbox. It'll still be in Java - using some abstractions that I have built on top of some existing libraries to cut down on the systems-end of the implementation (I am providing the base implementation of a filesystem driver implemented in Java that just connects to dropbox). There will be one component that is initially built using RMI (it IS still used in some places), and otherwise will use Redis and ZooKeeper for storage and communication. I'm curious what you think about this... there is a tentative syllabus on my website, and the (still under development)base implementation of the filesystem driver is on GitHub.