L'insegnante richiede un uso eccessivo / ingiustificato dei modelli di progettazione [chiuso]

6

Studio informatica e ho una classe chiamata "Tecniche di programmazione". Il suo scopo è insegnare (noi) buoni principi di progettazione orientata agli oggetti. Durante il semestre abbiamo compiti a casa, programmi che dobbiamo scrivere per dimostrare ciò che abbiamo imparato.

L'assistente di laboratorio richiede per ciascuno di questi compiti a casa di utilizzare modelli di progettazione specifici. Ad esempio, i compiti correnti sono un'applicazione utilizzata per elaborare gli ordini dei clienti. Ci viene richiesto di utilizzare i modelli di progettazione "Metodo di produzione" o "Fabbrica astratta" per questo. Diventa ancora peggio: alla fine del semestre dobbiamo scrivere un programma (qualcosa di più complesso) che deve usare almeno uno schema creativo, almeno uno schema strutturale e almeno uno schema comportamentale.

È normale richiedere questo? Voglio dire, costringendoci a progettare i nostri programmi in modo tale che uno specifico modello di design abbia senso va ben oltre ciò che considero ok. Se sono un meccanico di auto e ho una cassetta degli attrezzi enorme, userò un determinato strumento da quella scatola se e quando la situazione lo richiederà. Non più, non meno. Se il mio design dell'applicazione non richiede affatto l'uso di "Abstract Factory" (ad esempio), allora perché dovrei implementarlo?

Non sono ancora sicuro se il docente anziano è d'accordo con ciò che l'assistente di laboratorio sta richiedendo, ma voglio parlargli e ho bisogno di argomenti solidi per farlo. Come dovrei affrontare questo problema con lui?

PS: sono sicuro che ci deve essere un modo migliore per insegnarci queste cose. Magari facendoci leggere ogni settimana su 3 modelli di design e la prossima settimana fornendoci un test con programmazioni o situazioni / problemi architettonici piccoli ma specifici. L'obiettivo in questo test sarebbe identificare quali schemi di progettazione avrebbero senso e come potrebbero essere implementati. In questo modo, può vedere se li capiamo.

EDIT: Questi homework non sono solo programmi a 100 linee, hanno un sacco di requisiti e sono abbastanza complicati. Questo è il motivo per cui abbiamo circa 2 - 3 settimane di scadenza per ciascuno di essi.

Sono d'accordo che praticare questo è il modo migliore per imparare. Ma non dovrebbero essere usati programmi / applicazioni più piccoli per questo? Qualcosa solo per scopi dimostrativi. Non grandi programmi con molti requisiti / classi / ecc.

    
posta Radu Murzea 23.03.2012 - 14:26
fonte

10 risposte

95

Ci dispiace, ma penso che i tuoi insegnanti abbiano ragione.

Se stavi sviluppando software per un cliente, e il cliente o il tuo capo ti richiede di usare schemi di progettazione specifici, direi sicuramente che è stato un grosso errore. Ma c'è una differenza tra le assegnazioni di classe e lo sviluppo del software per un cliente: entrambi servono completamente a diversi scopi:

  1. Se stai sviluppando per un cliente, lo scopo è il software che crei. Dovrebbe funzionare, dovrebbe essere mantenibile, dovrebbe soddisfare i requisiti del cliente.

  2. Lo scopo dei tuoi compiti è non il software che crei, è l'esperienza che raccogli durante l'intero processo di creazione. Durante l'incarico imparerai qualcosa sull'implementazione dei pattern, che ti aiuterà a capire come funzionano i pattern, quando usare un pattern e (si spera) quando not per usarlo, anche.

Per usare l'analogia con la meccanica della tua auto: non sei un meccanico, stai imparando a diventare uno. E forse il tuo insegnante ti dirà quale chiave usare, per cambiare le gomme. Questo è completamente ok. E se il proprietario del garage ti dice di cambiare le gomme con un cacciavite, perché vuole che tu impari qualcosa dall'insuccesso che sicuramente si presenterà, va anche bene.

    
risposta data 23.03.2012 - 14:46
fonte
32

Se senti che il tuo insegnante sta facendo qualcosa di sbagliato, discutine con lui o lei.

L'imposizione di pratiche specifiche in un compito a casa è molto comune. Ti aiuta a imparare la cosa molto meglio che a leggerla. In breve, la pratica è un passo essenziale per l'apprendimento.

I hear and I forget. I see and I remember. I do and I understand. [Confucius]

    
risposta data 23.03.2012 - 14:32
fonte
15

In primo luogo, questo è un modo eccellente per insegnare i modelli di progettazione? No, probabilmente no. C'è un modo migliore per insegnare loro? Sono sicuro che ci sia. Dovresti organizzare una rivolta per questo? Assolutamente no. Lasciatemi elaborare:

Sei in una classe che sembra avere a che fare con schemi di progettazione. Gli schemi di progettazione sono i tuoi "strumenti di ingegneria del software" e dovresti assolutamente familiarizzarli con loro. In generale, hanno molti aspetti positivi, e uno di questi è che ti permettono di pensare a un livello più alto di astrazione. Invece di cercare di spiegare le cose a livello di singoli metodi o variabili, ora pensi in termini di modelli di alto livello.

It gets even worse: at the end of the semester we must write a program (something more complex) that must use at least one creational pattern, at least one structural pattern and at least one behavioural pattern.

Fai sembrare questo come se fosse una brutta cosa. Sì, ci sono alcune persone che diventano pazze e le usano in modo inappropriato e complicano troppo tutto con loro. Non esiste un modello creativo, un modello strutturale e un modello comportamentale. Qualsiasi sistema non banale avrà almeno così tanto, quindi è una buona idea mettersi a proprio agio con loro. Sospetto che questa sia l'idea generale della tua classe - dovresti dare un'altra possibilità.

    
risposta data 23.03.2012 - 14:48
fonte
8

hai usato un esempio meccanico quindi cerchiamo di stare con quello. Quando il meccanico era in allenamento e stavano insegnando la sostituzione dei pneumatici, gli hanno detto di usare la chiave inglese, non gli hanno dato una cassetta degli attrezzi e hanno detto di andare. È lo stesso con te, sei in classe per imparare ad implementare queste tecniche così quando un incarico di programmazione è destinato a utilizzare un determinato strumento che ti dicono. Questo problema non è davvero un problema, a meno che non ti stiano dicendo di usare un martello su quelle viti.

    
risposta data 23.03.2012 - 14:42
fonte
6

Il punto della classe / esercizi è imparare i modelli di progettazione? Se sì, allora fai ciò che dice e lavora sull'apprendimento dei modelli di progettazione. Non concentrarti sul fatto che il modello non è adatto al progetto di esempio.

Se la classe / esercizio riguarda la scelta del modello di progetto giusto per la situazione giusta, allora potresti avere un reclamo accettabile e parlarne con l'insegnante. Sarebbe ancora meglio se tu potessi suggerire alcuni buoni esempi di progetti che trarrebbero vantaggio dal modello di progettazione che stai cercando di imparare.

Non dimenticare di essere rispettoso e accetta il fatto che il tuo insegnante potrebbe non essere in grado di cambiare il programma.

    
risposta data 23.03.2012 - 14:43
fonte
2

Sei all'università? Difficilmente vedo il problema. Sto finendo il mio ultimo anno di scuola superiore e il mio insegnante di CS ci ha sempre dato questo tipo di incarichi durante l'intero semestre ogni anno che ho seguito il suo corso. Anche adesso, ci ha dato 2 settimane per finire un incarico di oop, qualcosa con cui sto lavorando per la prima volta. Proprio come nel tuo caso, non è un programma di 100 linee ma non risolvi problemi basati su linee di codice. A volte è un compito arduo, altre volte è una scarsa efficienza. Non fraintendetemi, ero senza tracce e infelice la prima settimana, ma una volta compresi i fondamenti, espandendo i requisiti fondamentali, sono diventato molto gratificante. Il tuo insegnante non ti sta dando gli strumenti migliori perché è una delle cose che uccide completamente la creatività e la comprensione. Perché preoccuparsi di controllare gli errori con le istruzioni switch o if quando puoi semplicemente utilizzare i blocchi try-catch? Perché dovresti analizzare una variabile del componente di lista in base alla variabile invece di usare una funzione che fa per te? La risposta che stai cercando non sarà sempre la più semplice, ma diventerà più facile se comprendi quando e perché utilizzare gli strumenti che ti sono stati dati.

    
risposta data 15.04.2012 - 09:54
fonte
1

Sembra strano che là ti stia inventando i tuoi compiti per creare modelli specifici, tuttavia, se riesci a farcela, ti consiglierei di abbracciare la classe e farlo. Sarà una grande esperienza di apprendimento e una cosa davvero fantastica da mettere nel tuo curriculum. Essendo un laureato nel mondo reale, posso dirti che l'ultimo punto che ho fatto fa la differenza nel mondo se vuoi avere un lavoro in questo campo. Una laurea da sola non significa nulla senza il lavoro di backup.

    
risposta data 23.03.2012 - 16:30
fonte
1

I agree that practicing this is the best way to learn. But shouldn't smaller programs/applications be used for this ? Something just for demonstrating purposes. Not big programs with lots of requirements/classes/etc.

I modelli di design non sono poi così interessanti in un programma molto piccolo. Chiunque può implementare una fabbrica o un osservatore per una classe che non fa nulla di utile. Il potere dei modelli deriva dalla loro capacità di aiutarti a organizzare programmi più grandi - una volta riconosciuto che un pattern è in uso, non è necessario leggere l'intera implementazione per avere una buona idea di ciò che fa il codice. I pattern sono gli strumenti che usi per tradurre "molti requisiti" in classi sensibili. Quindi chiederti di usare i pattern che stai imparando nel contesto di un programma che fa qualcosa di interessante sembra un'idea abbastanza carina.

Inoltre, se stai scrivendo questi programmi come compiti a casa per 2-3 settimane, stai ancora scrivendo piccoli programmi.

    
risposta data 23.03.2012 - 16:51
fonte
0

È triste che l'università si limiti a passare la questione in questi giorni, indipendentemente da cosa o come si impara. Mi sento per te perché alcuni anni fa mi trovavo in una situazione simile, ma mi è stato dato un progetto specifico per implementare dove una fabbrica era del tutto irrilevante, ma nonostante ciò abbiamo dovuto forzarne una. Il problema con questo tipo di insegnamento è che è molto fuorviante per gli studenti impressionabili. Se gli schemi di insegnamento sono fuori dal contesto, gli insegnanti devono chiarire questo punto. Qualsiasi bravo studente dovrebbe sollevare le sue preoccupazioni all'insegnante ... è di questo che dovrebbe essere l'apprendimento.

    
risposta data 24.03.2012 - 11:13
fonte
0

Un'abilità che devi imparare per sopravvivere alla scuola, al lavoro e anche nella vita, è imparare a scegliere le tue battaglie. In questo caso, a meno che le persone che impartiscono il corso non violino la legge, o si comportino diversamente in modo non etico, allora di solito non si può fare molto su queste cose. Non è nemmeno un caso se hai ragione o no. Hai bisogno di imparare quando mettere in discussione, poi quando porre domande o semplicemente andare con il flusso.

L'università è davvero un mezzo per un fine. Sono passati alcuni anni a imparare come affrontare lo stress e come educare te stesso. In IT, raramente ti viene insegnato molto nelle tue lezioni che ti durano più di qualche anno, e quando lasci la scuola, le uniche abilità reali che avrai saranno quelle di affrontare lo stress, rispettare le scadenze e, cosa più importante su come migliorare la tua educazione da solo mentre lavori.

Mentre mi rendo conto che questo non soddisfa in modo specifico la tua domanda, il mio consiglio è semplicemente di giocare. Alla fine di tutto, avrai imparato ad accettare ciò che ti è stato insegnato, o avrai imparato ad imparare da più fonti e alla fine a decidere. In ogni caso, ti risparmierai molto stress se esegui semplicemente il lavoro e poi vai oltre. Questo di per sé è un'abilità sociale molto utile da apprendere quando ti trovi con un capo potenzialmente sgradevole e un lavoro che non viene colto nel modo in cui tu farebbe da solo.

    
risposta data 15.04.2012 - 10:30
fonte

Leggi altre domande sui tag