INSTRUCTOR: Dr. Brian Mitchell - twitter
TA: Tri Le
Note you can get our direct email via the course blackboard site, not posting here to avoid spam-bots
This course often has a large number of students, making communication between students and the teaching team really difficult. Starting in 2019, I am moving away from email towards using Slack. If you email me or the course TA responses will likely be delayed, faster response will be over Slack.
To register for our course slack space please go to https://join.slack.com/t/drexel-se575-2020/signup. Note that I setup this space to only allow signup by individuals with a valid drexel.edu email address. You must use your drexel email address to join this slack space, personal email addresses will not work.
Once you join our slack space you can connect to it and use from a web browser (computer or mobile). You can also download a desktop application for Mac or Windows via the Resources->Download menu on the slack website. There are also really good native mobile apps for iOS and Android that you can install on your phone or tablet.
For those new to Slack I will be doing a brief demo on the first night and talking about how you should use Slack for this course
This is a graduate level course, and successful students need some foundational background in computer science and software engineering prior to taking this course. If you are comfortable with the basics of software design and can create (code, compile, deploy) simple applications you should be OK, we will be starting from here, not reviewing any of these things.
Please read the below set of requirements carefully and ask yourself "Am I Ready?". Every year I have students who struggle because they don't take the course prerequisites seriously. Ill repeat them below from the course syllabus:
- Students are expected to have some previous software engineering experience, either from a recent undergraduate course or from practical work experience.
- Students via previous courses or work experience have basic software design experience including a working understanding of design patterns, structuring code bases, understand basic OOP concepts (Inheritance, Polymorphism), and ideally some basic functional programming knowledge.
- Students are also expected to have the ability to write source code in a modern programming language, including surrounding skills working with a git-based SCM repository and build/dependency tools. Examples: Java, modern Javascript, Python, C#, GitHub, git, gradle, maven, npm, yarn, make, etc.
- Students must be comfortable being exposed to source code in programming languages that they might not know. I will be reinforcing course concepts by showing and explaining sample code in a variety of programming languages (Scala, Kotlin, GoLang, TypeScript, modern JavaScript, etc) throughout this course. While I don't expect students to know all of these languages, I do expect that they can follow examples in multiple programming languages when explained.
- Students should also have a basic knowledge of working with web technologies such as HTML, and Javascript. While only a limited basic working knowledge is required, I use web architectures a good bit in this course to highlight key modern software design and architecture concepts.
NOTE: If you are GOOD with all of the above you are set for this course. If you are COMFORTABLE WITH MOST OF THE ABOVE you should be OK, but might want to send me a message over slack to discuss any possible gaps. I can point you to online resources in many places to help. If you feel you have SIGNIFICANT GAPS with the requirements you will likely not do well in this course. Would be glad to discuss over Slack, but you might be better off dropping this course and taking it at a later date. DO NOT TAKE THIS LIGHTLY - EVERY YEAR I HAVE STUDENTS WHO DO NOT DO WELL BECAUSE THEY THINK THEY ARE READY FOR THIS COURSE BUT ARE NOT!
I'd recommend setting up your computer with the necessary course tools ASAP. I'm pretty flexible with the tools that you use. At the minimum I would recommend:
- An IDE that supports your preferred programming language. For this course I will be using IntelliJ Idea for Java/JVM based examples including Kotlin and Scala. This is not a free tool, but students can register for a full featured free version at https://jetbrains.com/student - requires a
drexel.eduemail account. You could also use Eclipse https://www.eclipse.org/ide/ or Spring tools (eclipse based) https://spring.io/tools - A modern text editor. Lots of choices out there, you can use whatever you like. For this course I will be using Visual Studio Code. Its free and its awesome if you don't have a favorite. You can get it from https://code.visualstudio.com/. I will also be using VSCode for
golangexamples. - You will need to submit your final project on an enterprise git service. I'd recommend you setting up a GitHub account if you don't already have one. You could also use a cloud hosted alternative such as GitLab or BitBucket. Drexel CCI also has a hosted GitLab service at https://gitlab.cci.drexel.edu. You need to use your
tuxcredentials to access the CCI gitlab service.