За какво служат данните в програмирането? Как се дефинират и как се използват?
Какво представляват собствените типове данни? Каква е ползата от тях? Какви са препоръките при дефиниране на собствен тип данни?
Защо е важна инициализацията на променливите? Какви са препоръките относно инициализирането на променливите?
Какво означава променливата да има добро име? Какви са конкретните препоръки за имената на променливите? Какви са препоръките за имената на водещите променливи в циклите, за булевите променливи, за статус променливите, за временните променливи, за променливите от изброен тип, за глобалните, за локалните, за член-променливите, за константите?
Трябва ли да се избягват променливи с еднакви имена и различна видимост?
Колко дълги трябва да бъдат имената на променливите? Препоръчва ли се имената на променливите да се съкращават и как трябва да става това, ако се препоръчва?
Какви имена за променливите трябва да се избягват?
Какви са общоприетите правила за имената на променливите в съвременните езици за програмиране (C++, Java, C#)?
Какво представлява унгарската нотация и има ли полза от нея? Защо в силно-типизираните езици тя не е необходима?
2.2.2.Препоръки за правилното използване на променливите
Какви са основните правила за правилно използване на променливите?
Какви са препоръките за видимостта на променливите (variable scope)?
Трябва ли да се избягва използването на променливи без да се декларират предварително в езиците, които позволяват това? Защо?
Необходимо ли всяка променлива да се използва само за едно нещо?
Защо глобалните променливи се считат за вредни? Важи ли същото и за модулните променливи и член-променливите в класовете? Какви проблеми създават глобалните променливи? Как могат да се избягват глобалните променливи и проблемите, свързани с тях? Има ли връзка правилното използване на глобалните, модулните и член-променливите с нивата на абстракция в програмата?
Какво представляват “variable lifetime” и “span”? Каква е връзката между “scope”, “lifetime” и “span”? Какво се препоръчва в тези насоки?
Какви са препоръките за работа с числови данни в програмирането?
Какви са препоръките за работа с целочислени променливи? Как се избягват проблемите с препълването на целочислените типове?
Какви са препоръките за работа с реални числа? Как могат да се избягват грешките със закръглянето при работа с реални числа с плаваща запетая?
Какви са препоръките за работа със символни данни? Какви видове символни низове (стрингове) има? Какви са предимствата и недостатъците им? Какво трябва да знаем за символните низове при различните езици за програмиране (C, C++, Java, Pascal, C#)?
Какви са препоръките за работа с булеви променливи?
Какви са препоръките за работа с променливи от изброен тип?
Какви са препоръките за работа с именовани константи?
Какви са препоръките за работа с масиви?
Какви са препоръките за работа с указатели в езиците, в които се поддръжат? Може ли да се счита, че работата с указатели е опасна и трябва да се избягва? Лошо ли е да се използва директен достъп до паметта на ниско ниво посредством указатели? Защо такива техники, типични за езици от ниско и средно ниво (като Assembler и C) не са позволени в езиците от по-високо ниво като Java и C# (C# managed code)?
Какви са препоръките за работа с типизирани указатели (references) в езиците, в които се поддръжат? Защо те се считат за по-безопасни от обикновените указатели? Може ли да се твърди, че типизираните указатели са “указатели от високо ниво”, които са възникнали като резултат от еволюцията на обикновените указатели?
Какви са препоръките за работа с променливи от тип клас (обекти)? Какво трябва да знаем за жизнения цикъл на такива променливи. Какво общо имат конструктурите и деструктурите?
2.2.4.Сложни типове данни
Какви данни, освен фундаменталните, има в програмирането?
Кога трябва да се използват структури и записи? Какви са препоръките за правилното им използване?
Какво е сериализация на структура данни? Какви са препоръките при сериализиране и десериализиране на структури данни?
Какво представляват lookup-таблиците? Кога се използват? Каква е ползата от тях? Какви са препоръките за правилното им използване? Винаги ли може логиката от програмата да се трянсформира в данни чрез lookup-таблици? Колко вида търсене в lookup-таблица има? Какво е директен достъп? Какво е номериран достъп? Какво е индексиран достъп? Какво е трансформация на ключа за достъп? Какви данни могат да съдържат елементите на една lookup-таблиците?
Какво представляват абстрактните типове данни? Кога се използват? Каква е ползата от тях? Какви са препоръките за правилното им използване?
Какво представляват рекурсивните структури от данни? Кога се използват? Какво представляват динамичните структури от данни?
Какви видове контейнери за данни има в програмирането? Какво е списък? Какво е шаблонен списък? Какво е итератор? Какво е динамичен масив? Какво е стек? Какво е опашка? Какво е приоритетна опашка? Кога се използват тези структури от данни? Какви са препоръките за правилното им използване?
Какво представляват хеш-таблиците, за какво и кога се използват? Какви са препоръките за правилното им използване?
Какво е граф? Какво е дърво? Какви видове дървета има? За какво и кога се използват? Какво е XML и каква е връзката между този език за описание на данни и дърветата? Какви са препоръките за правилното използване на дървета?
Какво е файл? Какво е индексен файл? Какво са потоците от данни (streams)? Какви са препоръките при използване на тези структури от данни?