Преподавател
Кирил Митов
Общото описание на курса е налично на http://lubo.elsys-bg.org/software_engineering/
На тази страница е дадено спесифичното 2014-2015 учебна година.
Въведение
Предметът „Технология на програмирането“ се изучава в 11 клас от ученици на ТУЕС. Има за цел да въведе учениците в технологиите, процесите и средствата за разработка на софтуер. Разглеждат се итеративни процеси, използвани в индустрията, като се отделя внимание на събирането и обсъждането на изискавнията, оргинизирането на екипа, избор на технологични решения, обработка на данни и файлове, разработка на unit (JUnit, RSpec, Cucumber и др.) тестове, използване на системи за управление на версиите (Git), поддържане качеството на кода, „refactoring“, „debugging“, Test Driven Development, средства за автоматизиране (make, ant, maven) и др.
Работи се с езикът Ruby. Разглеждат се Java и Eclipse, разработката на десктоп приложения (SWT, JFace), работа с бази данни (JDBC), разработката на Eclipse Plug-ins
Предметът завършва с представяне на разработено приложение по проект на учениците, в който могат да използват програмен език, среда и технологии по свой избор.
Голямата цел през 2014-2015 е учениците сами да разработват инструментите, чрез които да проверяват успешното предадените от тях домашни.
Важно – всяка година материалът е различен. За пълно запознаване с предмета прегледайте и материалите от предишни години.
Оценяване
Изпитите се провеждат както следва. По време на изпита може да се явят участващи за различни колани. Но при явяване на изпит трябва да имате всички реализирани домашни за съответния изпит.
Първи срок
- първи изпит – седмица 5
- втори изпит – седмица 10
- трети изпит – седмица 15
Втори срок
Ще стане ясно през втория срок
Материали за 2014/2015 година:
Материалите за учебния план се намират https://drive.google.com/folderview?id=0B2u3mIflzKI4bENCTkJ5aFFiUUU&usp=sharing
Хранилище на целия код
През тази година целия код ще се качва в хранилище в Github. Можете да го достъпите през https://github.com/thebravoman/software_engineering_2014/
Chapter I – introduction, git, CSV and text files
- Class 001. Introduction
- Class 002. Automatic check of home works from input levels
- Class 003. Input data, arguments from the command line and test fixtures
- Class 004. Manual run home works and check of expected results
- Class 005. Automatic check of home works. Implementing a script
- Class 006. Automatic check of home works. Implementing a script – continuing with fixing
- Class 007. Automatic check of home works. Implementing a script – continuing with fixing
- Class 008. Tests
- Summary
Chapter II – Reviewing code. Learning from mistakes. Ideas for improvements. Writing a better code.
- Class 009. Learning from errors
- Class 010. Second test
- Class 011. Presentation of reports on errors
- Class 012. Finalizing evaluation on chapter I home works
- Class 013. XML. Writing in a different file format
- Class 014. Writing in different files formats (XML, JSON, HTML, SVG)
- Class 015. Running code static code check and analysis (flog and flay)
- Class 016. Developing exams tasks
- Class 017. Doing the exam
- Class 018. Extracting hardcoded values to YAML configuration file
- Class 019. Doing an exam again
- Class 020. Review of programs. Writing better code.
Chapter III – Test Driven Development. Automated unit testing. Behaviour Driven Development.
Evaluation
For this year I came up with three consecutive plans on how to do the evaluation. I like changing the plans each year to reflect the work that we have done. For each year for the evaluation there is only one goal – „to be fair“
Plan 1 (not applicable – this means I did not used it)
This plan was to include attendances, homeworks, test1,test2,test3, but this didn`t work because of the lack of success of test2. The experiment didn`t work.
Plan 2 (not applicable – this means I did not used it)
The plan is described below. When I did the evaluation it had a number of flaws. People with good tests were having very low scores, because of the remove homeworks. Also Test 3 is solved by almost anybody, which is great, but we could all agree that the second time Test 3 was solved was much less challenging than the first time. Same applies for Test 1. The first time is much more difficult that the 6-th.
- Test 1 – 1 points
- Test 2 – 0 points
- Test 3 – 2 points
- Homeworks and attendances – +-2 points (all checked homeworks sum up to no more than 2 points. If 5 homeworks are checked than each homework is 0.4 points. If 10 homeworks are checked each homework is 0.2 points).
- Correct homework adds points.
- Wrong homework removes points.
- Attendance could only add to the points.
Evaluation:
1 points – 3
2 points – 4
3 points – 5
>4 points – 6
Plan 3 (currently applied and proposed)
- Attendance points = Student Attendance/Max attendances * 0.3 – so all attendances are equal to taking Test 1 from the second try.
- Homework points = Student homeworks/Max homework points * 1.2 – so max homework points are almost equal to taking Test 3 from the second try
- Test 1 points = 100%*FirstTry +90%*SecondTry+80%*ThirdTry+70%*Other tries
- This simply means that if you have taken the test from the first time you have 1 point.
- If you have taken it from the second time you have 0.9 points.
- If you have taken if from the six time you have 0.7 points
- Test 2 points
- If taken from the first time you have 2 points
- If taken from the second time you have 1.4 points
At the end all the points are not weighted equally and the weights are
2
+ Attendance Points
+ Homework Points
+ Test 1 points
+ Test 3 points * 1.2
– 1 point If the Homework Points are 0
By this scheme you can have more than 6, which is not a problem.
The last tree homeworks were checked and most of you didn`t have them!
I do accept comments on the fairness of the process in the comments below, before making them final.
Second term
Projects
- Youtube channel administration from an external app using the Youtube V3 API. Subscription fee per month for access.
- Subtitles editing and synchronization – Desktop. Licensed fee.
- move subtitles forward/backward
- show subtitles over the video
- enter subtitles and synchronize them with the sound
- Subtitles editing and synchronization – Web Java Script. Subscription fee per month. Free for the first X subtitles/users per month. Similar to amara.com
- move subtitles forward/backward
- show subtitles over the video
- enter subtitles and synchronize them with the sound
- Testimonials to your site – similar to http://pluspanda.com/. Subscription fee per month. Free for the first X testimonials.
- Format conversion service similar to http://online-convert.com. Pay per month or conversion.
- OAuth server.
- Managing social network posts in a single application. Support for Twitter, Facebook, Google Plus, Pinterest. View all the user activities in social networks and administer posts from a single place. Pay per month.
- Subtitles generation by voice recognition – provide a link to an audio or video file and return a transcript in raw and in srt format. Pay per month or per number of conversions made.