Software Engineering Track Overview Video

The following is a transcript of the video clip "Software Engineering Track Overview":

Kim Nguyen (Junior): Hi, I'm Kim Nguyen, I'm also a junior in computer science, and I guess to start off with, could you describe the general differences between Software Engineering or the General Computing track?

Ken Anderson (Associate Professor): Yeah, so in the, actually in our two foundation courses there's not a lot of difference because both of those courses actually appear in the General Computing track. But what we focus on in the foundation is the tools and the methods that you need when doing software development, and then that's in 3308, and then the design and requirements skills that you need to understand someone's problem or situation, to develop software for them. So there's this focus on problem solving, understanding what the problem is that needs to be solved, and coming up with the design that solves that problem.

Nguyen: And just looking this, I see that the foundation courses, object oriented class and software methods and tools, is it advised that a student takes these courses before doing the core classes?

Anderson: Yeah they can start taking some of the core courses in parallel with these. A lot of these classes in the core, to supplement your knowledge of various areas, design skills say in the Design, Creativity class, learning a little more about the underlying operating system, or knowing how to interact with databases, and design user interfaces. So those can be taken simultaneously -- what we do hope students do is take the Software Engineering Methods and Tools first, and then take the OO analysis and design class after. The purpose of the methods and tools class is to teach you everything about testing, debugging, profiling, all the kind of processes that you apply while you're building a software system. And then you get a chance to use all those tools in the OO analysis and design class, after you have learned your design and requirement skills, you then, take everything you learned in 3308.

Nguyen: And also, could you describe the ways in general the characteristics that a student might have that would be good for Software Engineering?

Anderson: So I think one of the things that, a good characteristic for a software engineer is, someone that is interested in solving problems. Because what you do is, requirements, a set of requirements is essentially, here's a statement of the problem that needs to be solved; design is the, how am I going to solve this problem, what approach, what tools am I going to use, if it's software based, hardware based. So some people like to solve problems. Also I think software engineers are life-long learners -- they love new things. I'm constantly picking up new programming languages, new techniques, new tools to automate the various processes and the like. They should also be a little bit disciplined, be willing to learn a software engineering process, and then be disciplined in applying it. What's interesting about software engineering is that there are processes to follow or things to remember, guidelines to follow, at the personal level, at the team level, the organizational level, and you need to see these things kind of fit together and happen in the right place so that you can scale up to very large systems. If you think of something like Microsoft or IBM or Apple Computer, putting together one of these very large operating systems, millions of lines of code, built by 5,000 people, they have to really figure out how to work together, what tools they're going to use.

Nguyen: And also to wrap up, could you talk about some of the types of jobs that would be best suited for someone who did the Software Engineering track?

Anderson: Yeah, I think there's a range of possibilities. I mentioned earlier in the presentation system analysts, people that go in and apply the requirements and design set of things to new situations and then learn the new environment, what are the problems facing this organization, and kind of tools need to be applied, built for them to make their job better. So there's a lot of opportunities for designers. You'll see that in web design, software consultants, you have to go understand small-scale problems and develop solutions. And then software development jobs or architecture jobs, things where you're kind of in the product development team, understanding the main requirements and operationalizing those into a solution.

Nguyen: OK, thank you.

Anderson: Alright, thanks.

Transcript provided by Erik Silkensen.